算法题解_哥德巴赫曾猜测

简介: 算法题解_哥德巴赫曾猜测

一、哥德巴赫曾猜测

题目描述 德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如:

10=3+7,10=5+5,即10可以分解成两种不同的素数对

输入 输入任意的>6的正偶数(<32767)

输出 试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)

样例输入 1234 样例输出 25


1.思路

通过看完题目,分析出这道题主要考的是对素数的求解,即找出目标数中的素数并且某两个求和等于目标数

素数:1不是素数,从2开始,除了1和本身不含其他约数

素数的求法有三种:

我们只需要记住最简单的一种即可

    //求是否是素数
    public static boolean checked(int num){
        for(int i =2;i<=Math.sqrt(num);i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

加入两个素数a+(num-a)=num,即我们可将判断条件设置为checked(a) && checked(num-a) ,这里的话,因为是a和num-a两个数,所以循环时候总数只需要循环到一半即可


2.代码

import java.util.Scanner;
public class thirdtest{
    //image:
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int number = s.nextInt();
        int count = 0;
        if(number<6 || number%2!=0 || number>=32767){
            System.exit(0);
        }
        int j =0;
        for(int i=3;i<=number/2;i+=2){
            j=number-i;
            if(checked(i) && checked(j)){
                System.out.println(i+" "+j);
                count+=1;
            }
        }
        System.out.print(count);
    }
    //求是否是素数
    public static boolean checked(int num){
        for(int i =2;i<=Math.sqrt(num);i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}


相关文章
|
11月前
|
算法
leetcode算法 每日一题(17.04消失的数字)day 1
今天开始小编开始给大家带来算法题目的讲解,首先我们看题目描述
99 0
|
算法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
79 0
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
|
机器学习/深度学习 算法 JavaScript
【算法日记】快速幂:关于我知道答案却做不出来这档事
LeetCode第330场周赛,直接卡在了第二题😭,掉大分,学到一手快速幂。本文包含以下内容:快速幂,快速幂取余。
109 0
|
安全 算法 C++
蓝桥杯练习题二 - 合并检测(c++)
蓝桥杯练习题二 - 合并检测(c++)
133 0
|
缓存 算法 Java
|
算法 Java
【算法】给你一个数字算出螺旋矩阵,要不要来试一试?
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的
66 2
【算法】给你一个数字算出螺旋矩阵,要不要来试一试?
|
算法 Java Python
【算法题解】 Day7 偷懒的一天
I'm so sorry, 今天出去玩了,所以只有每日一题的签到,偷懒了偷懒了,下次不会了,sos...
49 0
|
存储 算法 C语言
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
122 0
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
|
算法 C++
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(下)
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(下)
84 0
|
算法 C++
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(上)
【数独 1】不回溯,试试候选数法1ms高效解数独谜题-C++实现(上)
110 0