public class Spec{
public static void main(String[] args){
su(100);}public static void su(int n){
int i=1,num=2,;
while(i<=n){
int a=1;
//for循环结束以后重置a值
for(int j=1;j<=num/2;j++){
a=a*(num%j);
//利用a值不为0判断是否为素数
}
if(a!=0){
i++;
System.out.print(num+"  ");}num++;}
}}这个程序检查不出来错误,到运行的时候没有结果,求各位大佬指点

解决方案 »

  1.   

    for(int j=1;j<=num/2;j++){
    a=a*(num%j);
    //利用a值不为0判断是否为素数
    }你这里又不是只循环一次,总有不是素数的,所以a怎么都等于0重置a 和判断都要放for 循环内
      

  2.   

    哦,看错了,因为你for循环 开始时j=1   a=a*(mun%j)  怎么都会是0;
      

  3.   

    错的有点多,按你的思路重写了一个,自己对着看吧
    public static void main(String[] args) {
    su2(100);
    }

    public static void su2(int cot){
    int num = 2, i, total = cot + 1;
    while(cot != 0){
    for(i = 2; i < num; i++)
    if(num % i == 0 || i > num / 2)
    break;

    if(i > num / 2)
    System.out.println("第" + (total - cot--) + "个 : " + num);
    num++;
    }
    }
      

  4.   

    源代码主要是错在j=1  把j=1 改为 j=2就行了,其他还有些小错误多了逗号什么的改掉就行了
      

  5.   

    public class Spec {
    public static void main(String[] args) {
    su(100);
    } public static void su(int n) {
    int i = 1, num = 2;
    while (i <= n) {
    int a = 1;
    //for循环结束以后重置a值
    for (int j = 2; j <= num / 2; j++) {

    a = a * (num % j);
    //利用a值不为0判断是否为素数
    }
    if (a != 0) {
    i++;
    System.out.print(num + "  ");
    }

    num++;
    }
    }
    }改好的代码
      

  6.   

    错了,j从1开始,当j为1时,即是num是素数,num%j也为0,导致a为0,因此没有输出任何素数。
      

  7.   

    错了。j从1开始循环,当j为1时,a%j的值为0,导致a为0,此时即是是素数也被误判断为合数了。