为了账号安全,请及时绑定邮箱和手机立即绑定

用数组求前100个素数

用数组求前100个素数

Teresa_w 2016-06-01 10:58:13
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); }这个输出的结果是:333请问我哪里错了啊
查看完整描述

7 回答

?
蜂之谷

TA贡献564条经验 获得超863个赞

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]);
		}


查看完整回答
2 反对 回复 2016-06-01
?
Caballarii

TA贡献1123条经验 获得超629个赞

错得太多了,逻辑惨不忍睹。

建议你分几步走,首先写判断某个数是不是素数,然后再考虑怎么输出前100个素数的问题

查看完整回答
2 反对 回复 2016-06-01
?
一澄几许

TA贡献1条经验 获得超1个赞

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+"是素数");

}

}


}

查看完整回答
1 反对 回复 2016-06-02
?
252545109

TA贡献4条经验 获得超3个赞

你的逻辑有点错误,根据你的计算思路,我自己写了一个;;;;

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


查看完整回答
反对 回复 2016-06-02
?
1255321142

TA贡献2条经验 获得超0个赞

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;
	}
}


查看完整回答
反对 回复 2016-06-02
?
Change___

TA贡献7条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-06-01
?
贰先生

TA贡献3条经验 获得超0个赞

首先,你要搞懂什么是质素。怎么来的。根据这个建立你的逻辑代码。然后循环100下

查看完整回答
反对 回复 2016-06-01
  • 7 回答
  • 1 关注
  • 2806 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信