猿问

用数组求前100个素数

public class primeNum {


public static void main(String[] args) {


                System.out.println("前一百个素数是:");

int n[]=new int[100];

n[0]=2;//第一个素数是2

int p=3 ; //从三开始判断是不是素数

                int cn;

int k;//控制循环次数

System.out.println(""+p);

for(k=1;k<100;){

for(cn=1;cn<p;cn++){

boolean flag=true;

if(p/cn==0){

flag=false;

p++;

}

if(flag=true){

n[k++]=p;

System.out.println(""+p);

}



这个输出的结果是:

3

3

3


请问我哪里错了啊

Teresa_w
浏览 2822回答 7
7回答

蜂之谷

int count = 0; int fg = 1; int[] n=new int[100]; for (int x = 2; count < 100; x++) { double k = Math.sqrt(x + 1); for (int i = 2; i <= k; i++) { if ((x % i) == 0) { fg = 0; break; } } if (fg == 1) { n[count] = x; count++; } fg = 1; } System.out.println("前100个素数:"); for (int i = 0; i < n.length; i++) { System.out.println(n[i]); }

Caballarii

错得太多了,逻辑惨不忍睹。建议你分几步走,首先写判断某个数是不是素数,然后再考虑怎么输出前100个素数的问题

一澄几许

package sushu;public class sushu { public static void main(String[] args) { System.out.println("前一百个素数是:"); //int n[]=new int[100]; int p=0 ; int cn,k; for(k=1;k<=100;k++) { for(cn=1;cn<k;cn++) { if (k%cn == 0 && cn<k && cn > 1) { p++; break; } } if (p!=0) { System.out.println(k+"不是素数"); p=0; } else System.out.println(k+"是素数"); } }}

252545109

你的逻辑有点错误,根据你的计算思路,我自己写了一个;;;;public class demo01 {  public static void main(String[] args) {  int num=3;  int numcalled=0;  System.out.print(2+"\t"); for(numcalled=0;numcalled<99;){ boolean flag=false; for(int j=2;j<num;){ if(num%j==0){ flag=false; break; }else{ flag=true; j++; }   } if(flag==true){ numcalled++; if(numcalled%10==0){ System.out.println(); } System.out.print(num+"\t");   } num++;   }}}控制台输出结果如下:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541

1255321142

p++ p的值一直不变,你不就一直判断的是3了。。。。另外你的代码最好改改 import java.util.Arrays; public class primeNum { public static void main(String[] args) { System.out.println("前一百个素数是:"); int[] arr=new int[100]; int i=2;//要判断的数 int k=0;//下标 while (true) { if(k>=100){ break; } if(isPrime(i)){ arr[k++]=i; } i++; } System.out.println(Arrays.toString(arr)); } public static boolean isPrime(int num){ boolean result=true; for(int i=2;i<num;i++){ if(num%i==0){ return false; } } return result; } }

Change___

for循环嵌套那里,外部for循环错了,循环条件看看,少了K++

贰先生

首先,你要搞懂什么是质素。怎么来的。根据这个建立你的逻辑代码。然后循环100下
随时随地看视频慕课网APP

相关分类

Java
我要回答