首先,我们要了解什么是质数。
只有能被1和他本身整除的数就是质数
为此,网上也有很多常见的代码。这里我发出一种最常见的代码,做一个标记存储,进而求取和。
public class TestFile {
public static void main(String[] args){
int sum=0;//定义一个和
//遍历1-50
for(int i=2;i<=50;i++){
//判断i是否是素数
int index=1;//建立一个标签,以此来判断是不是素数
for(int j=2;j<i;j++){
//素数判断
if(i%j==0){
index=0;//不为素数,为合数
}
}
//素数求和
if(index==1){
sum=sum+i;
}
}
System.out.println("1-50所有素数的和为"+sum);
}
}
最终结果是328
这种就是比较常见网上搜索到的方法。
我今天下午实验的时候,我又想了两种,可以让大家一起学习,这种方法也很便于和我一样初学者理解。
第一种方法:我后面代码都有备注
public class TestFile {
public static void main(String[] args) {
int sum = 0;//存储2-50的和
int sum1 = 0;//存储合数的和
int sum2 = 0;//存储素数的和
for (int i = 2; i <= 50; i++) {
//判断i是否是素数
for (int j = 2; j < i; j++) {
//素数判断
if (i % j == 0) {
//System.out.println(i);//这里输出的是合数为此可以求出他们的和
sum1=sum1+i;
break;
}
}
}
//遍历2-50,求出2-50的和
for(int i=2;i<=50;i++){
sum=sum+i;
}
//最后就是求出素数的和
sum2=sum-sum1;
System.out.println("1-50所有素数的和为" + sum2);
}
}
如果不清楚可以在我省略代码处,把省略去掉,debug进行查看是不是
第二种方法:
public class TestFile {
public static void main(String[] args) {
int sum = 0;//存储2-50的和
//遍历8-50
for(int i=8;i<=50;i++){
if(i%2==0||i%3==0||i%5==0||i%7==0){
//System.out.println(i);//能被这些特殊数整除的都不是素数
}else {
sum=sum+i;//素数和
}
}
sum=sum+17;//这里为啥要加17,因为是从8开始进行查找的,8之
//前还有2,3,5,7是素数。所以要加上他们的和
System.out.println("1-50所有素数的和为" + sum);
}
}
这就是我今天想出的两种新的方法,可能早都有了,只是过于简单不太实用,没有多少大佬愿意发,我发出来供大家学习,提供更多思路。
正好,今天是女神节,祝各位女士女神节快乐。