找出1-100之间所有的素数(质数)
第一种方法:
如何判断i是否是素数 (1)找出i的所有的约数,并累加它们的和 例如: i=5,它的约数有1和5,约数和:6 i=11,它的约数有1和11,约数和:12 i=18,它的约数有1,2,3,6,9,18,约数和:39 (2)如果某个i的约数和 == i+1,那么i就是素数
class PrimeIn_100_1{
public static void main(String[] args){
//找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){
//里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i //(1)找出i的所有的约数,并累加它们的和 int iSum = 0; for(int j=1; j<=i; j++){
if(i%j==0){
//j是i的约数 iSum += j; } } //(2)如果某个i的约数和 == i+1,那么i就是素数 if(iSum == i+1){
System.out.println(i); } } } }
第二种方法
统计[2,i-1]之间约数的个数
如何判断i是否是素数 (1)找出i在[2,i-1]之间的约数的个数 (2)如果这个个数是0,那么i就是素数
class PrimeIn_100_2{
public static void main(String[] args){
//找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){
//里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i int iCount = 0; for(int j=2; j<i; j++){
if(i%j==0){
//j是i在[2,i-1]之间的约数 iCount++; } } //(2)如果这个个数是0,那么i就是素数 if(iCount == 0){
System.out.println(i); } } } }
第三种方法:
如何判断i是否是素数 (1)假设i是素数 boolean flag = true;//true代表素数 (2)找i不是素数的证据 如果在[2,i-1]之间只要有一个数能够把i整除了,说明i就不是素数 修改flag = false; (3)判断这个flag
class PrimeIn_100_3{
public static void main(String[] args){
//找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){
//里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i //(1)假设i是素数 boolean flag = true;//true代表素数 //(2)找i不是素数的证据 for(int j=2; j<i; j++){
if(i%j==0){
flag = false;//找到一个就可以了 break; } } //(3)判断这个flag if(flag){
System.out.println(i); }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232631.html原文链接:https://javaforall.net
