一.找出10000以内的质数
质数:只能被1和本身整除的数叫质数
思路一:
先逐个遍历10000内的所有的奇数,从2开始,然后遍历小于开方后的奇数,如果能整除就不是质数,如果不能整除,就是奇数
int cirCount = 0;//循环的次数
int count = 0;//质数的个数
for(int i = 2;i<=10000;i=(i==2?i+1:i+2),cirCount++){//只遍历奇数,偶数一定不是质数
boolean is = true;
for(int j =2;j<=Math.sqrt(i);j=(j==2?j+1:j+2),cirCount++){
if(i%j==0){
is = false;
break;
}
}
if(is){
count++;
System.out.println(i);
}
}
System.out.println(count+"个数,循环了"+cirCount);
思路二:
int[] array = new int[5000];
int size = 0;//统计质数的数量,下一个质数的下标位置
array[size++] = 2;
int count = 0;
boolean is ;//判断是否为质数
for(int i = 3,n;i<=10000;i+=2,count++){
n = (int)Math.sqrt(i);
is = true;
for(int j =0;array[j]<=n;j++,count++){
if(i%array[j]==0){
is = false;
break;
}
}
if(is){
array[size++] = i;
}
}
for (int i = 0; i < size; i++) {
System.out.println(array[i]);
}
System.out.println("质数"+size);
System.out.println("循环了"+count+"次");