素数对+判断质数

描述

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))

输入:

10

输出

2

思路

首先这道题,需要一个判断是不是质数的方法,然后从2开始一直到n/2,判断i和n-i是不是满足同时为质数,如果满足count++

判断质数代码,以下两种方法均可

    public static boolean isss(int n){
      for(int i=2; i<=Math.sqrt(n); i++){
        if(n%i == 0)
              return false;
      }  return true;
    }
    //判断一个数是否是质数(素数)
    public boolean isPrimeNumber(int num){
        if(num == 2) return true;//2特殊处理
        if(num < 2 || num % 2 == 0) return false;//识别小于2的数和偶数
        for(int i=3; i<=Math.sqrt(num); i+=2){
            if(num % i == 0){//识别被奇数整除
                return false;
            }
        }
        return true;
    }

完整代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int count =0;
        while(sc.hasNext()){           
            int n = sc.nextInt();
            for(int i=2;i<=n/2;i++){                
                    if(isPrimeNumber(i) && isPrimeNumber(n-i)){
                        count++;                  
                }
            }            
        }
        System.out.print(count);
    }

    //判断一个数是否是质数(素数)
    public static boolean isPrimeNumber(int num){
        if(num == 2) return true;//2特殊处理
        if(num < 2 || num % 2 == 0) return false;//识别小于2的数和偶数
        for(int i=3; i<=Math.sqrt(num); i+=2){
            if(num % i == 0){//识别被奇数整除
                return false;
            }
        }
        return true;
    }
}

参考:

https://blog.csdn.net/ahem_/article/details/65939250

猜你喜欢

转载自blog.csdn.net/xuezhan123/article/details/79797525