您的位置:首页 > 其它

素数对+判断质数

2018-04-03 02:09 309 查看

描述

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: