题目
质数的和
10 以下的质数的和为 2+3+5+7=17,求所有两百万以下的质数的和。
答案:142913828922
解析
题目要求求两百万以下的质数和
关键:判断是否为质数(掌握判断质数的方法即可)
质数的判断
// 判断是否为质数
public static boolean isPrime(int temp){
//判断temp是否为质数
int sq=(int)Math.sqrt(temp);
for(int i=2;i<=sq;i++){
if(temp%i==0){
//表明有因子
return false;
}
}
return true;
}
代码
package edu.wust.competiton;
import java.util.Scanner;
public class chapter7 {
// 判断是否为质数
public static boolean isPrime(int temp){
//判断temp是否为质数
int sq=(int)Math.sqrt(temp);
for(int i=2;i<=sq;i++){
if(temp%i==0){
//表明有因子
return false;
}
}
return true;
}
public static void main(String[] args) {
int n=2000000;
long sum=0;
for(int i=2;i<=n;i++){
if(isPrime(i)){
//判断是否为质数
sum+=i;
}
}
System.out.println(sum);
// 输出结果:142913828922
}
}
注意
此处求和的变量的sum的值不可为int,会溢出