求质数

部署运行你感兴趣的模型镜像

以下只是简单的质数求法,另外想提高效率可以尝试过滤的方法。

/**功能:查找100以内的所有质数。 答案: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 
 * 概念:1既不是质数也不是合数,质数只能够被1和它本身整除,
 * 算法:2是最小的质数,因此判断一个数i是不是质数,可以将该数除以j(2<=j<i等).如果i不能被j整除,则i是质数;否则i不是质数。
 * 另外除2以外的偶数都不是质数,因为2是这些偶数的质因数。设n=a*b,若a>=sqrt(n),则b<=sqrt(n),即任意合数n可以转换为两个因数的乘积,
 * 其中一个数大于等于sqrt(n),另一个小于等于sqrt(n)。
 * 此算法中至少应有2个循环,一个用来实现i从1到100的计数,另一个用来实现除数j的计数。我们用一个标记flag来反应i能否被j整除(flag=i%j)。
 */


package project1;


public class PrimeNumber {
      public static void main(String[] args) {
int i,j,flag=1;
//算法1:(2<=j<i)
for(i=2;i<=100;i++){     //1不是质数,从2遍历到100
  for(j=2;j<i;j++){     //加上限制条件,让i=3开始才能执行第2个循环,i=2时直接输出
  flag=i%j;           
  if(flag==0)       //一旦发被j整除,退出内循环,转到外循环   
  break;
  }
  if(flag!=0)           //i不能被j整除,输出i
  System.out.print(i+" ");
}
//算法2:(2<=j<=i/2)
System.out.println();
flag=1;
for(i=2;i<=100;i++){     //1不是质数,从2遍历到100
  for(j=2;j<=i/2;j++){     //加上限制条件,让i=3开始才能执行第2个循环,i=2时直接输出
  flag=i%j;           
  if(flag==0)       //一旦发被j整除,退出内循环,转到外循环   
     break;
 }
 if(flag!=0)           //i不能被j整除,输出i
 System.out.print(i+" ");
}
//算法3:(2<=j<=Math.sqrt(i))
System.out.println();
flag=1;
for(i=2;i<=100;i++){     //1不是质数,从2遍历到100
  for(j=2;j<=Math.sqrt(i);j++){     //加上限制条件,让i=3开始才能执行第2个循环,i=2时直接输出
      flag=i%j;           
  if(flag==0)       //一旦发被j整除,退出内循环,转到外循环   
    break;
 }
 if(flag!=0)           //i不能被j整除,输出i
 System.out.print(i+" ");
}
//算法4:(排除2以外的偶数,且2<=j<=Math.sqrt(i))
System.out.println();
flag=1;
System.out.print(2+" ");  //先将2输出
for(i=3;i<=100;i+=2){     //除2以外的偶数都不是质数,设计步长为2,只查找奇数 
  for(j=2;j<=Math.sqrt(i);j++){     //加上限制条件,让i=3开始才能执行第2个循环,i=2时直接输出
  flag=i%j;           
  if(flag==0)       //一旦发被j整除,退出内循环,转到外循环   
  break;
  }
  if(flag!=0)           //i不能被j整除,输出i
  System.out.print(i+" ");
}
}
}

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值