原理很简单,质数一定是奇数,质数的倍数一定不是质数。
/*
素数:又被称为质数,能够被1和自身整除,不能被其他数字整除的数字成为素数。
也就是说判断条件应该是:除的数只要不包含1和本身,只要有有一个数能被整除,就不是素数
不能是:只要没有可以整除的数,就是质数, 这个是错的i%j!=0
举例15 15/4=3···余3,15不能整除4,但是可以整除3和5,这里余数不为0,但15也不是质数
所以用这个条件判断是否为质数是错的
能整除1,i%1==0 任何数都能整除1, 自身整除 i%i==0 只能被自己整除,
升级:1~10000中的素数
要求:每八个换一行
每八个质数换一行,就要知道质数个数。而且一定是在循环之内,加个判断条件,每输出一个i就记录一次
判断是否为8个数的条件要放在外层循环之内,
*/
public class ForText10 {
public static void main(String[] args) {
System.out.println("10000以内的质数:");
int count=0;//计数
for(int i = 2; i <=10000;i++) {
boolean flag = true;//默认为质数
for (int j = 2; j < i; j++) {//判断是否为质数
if (i % j == 0) {//不是质数的输出错
flag = false;
break;
}
}
if (flag) {
count++;//统计i的个数,只要有一个符合条件count就会自加一
System.out.print(i+" ");//输出质数
if(count==8){//当i的个数为8时,输出换行,并且使count的值归0,从而继续换行
System.out.print("\n");
count=0;
}
}
}
// //第二种方法
// System.out.println("10000以内的质数:");
// int count=0;
// for(int i = 2; i <=10000;i++) {
// boolean flag = true;//默认为质数
//
// for (int j = 2; j < i; j++) {//判断是否为质数
// if (i % j == 0) {//不是质数的输出错
// flag = false;
// break;
// }
// }
// if (flag) {
// count++;//统计i的个数,只要有一个符合条件count就会自加一
// System.out.print(i+" ");//输出质数
// if(count%8==0){//当count可以整除8时,输出换行,也就是每8个换一行
// System.out.print("\n");
// }
// }
// }
}
}