java中求素数遇到的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:02:20
public class SuShu {
public static void main(String[] args) {
int k = 0;
//int count = 0;
int i = 2;
label1:
for(;i < 21; i++) {
for (int j = 2;j <= Math.sqrt(i);j++ ) {
k = 0;
if ((i % j == 0)&&(i != j)) {
i++;
break label1;
} else {
k = 1;
}

}
if (k == 1) {
System.out.print(i+"\t");
}
}
}
}
请问我这个程序就素数哪里有错误,我都调了老半天了,也不知道哪里错,
如果不对,那正确的该怎么写
谢谢!

我的代码,输出1000以内的素数
public class SuShu {
public static void main(String[] args) {
int n=0;//记录1000以内素数的个数
int m=0;//记录数字能被几个数整除
for(int i=1;i<1000;i++){
for(int j=1;j<=i;j++){
if(i%j==0){
m++;//如果i能被j整除,则计一次
}
}
if(m==2){//如果只能被2个数整除,那么是素数
n++;
System.out.println(i);//输出素数
}
m=0;//数字归零
}
System.out.println("1000以内共有"+n+"个素数");
}
}
当然这段代码的效率不是最高的,楼主,可以把
for(int j=1;j<=i;j++)改成for(int j=1;j<=i/2;j++),把if(m==2)改成if(m==1),那样更快;还可以在第二个循环外加个判断:if(i%2!=0),那就更快了

public class SuShu {
/** 20以内的素数计算 **/
public static void main(String[] args){
//是否是素数判断标识
boolean isNotSuShu = false;
//20以内数的素数循环
for(int i = 2; i < 21; i++){
isNotSuShu = false;
//2到这个数的循环判断->这个数/(2到这个数之前的每一个数)
for(int j = 2 ; j < i ; j++){
if(i % j == 0 ){