/*
* Eratosthenes 算法找素数
* primes[] 初始值都为true
* 因为2的倍数不是素数,所以对于所有的2<=i<=n/2来说,primes[2*i]都不是素数
* 因为3...................3<=i<=n/3....primes[3*i]都不是素数
* 无需考虑4,6,8,9等的情况,因为二的倍数也是4的倍数
*/
import java.util.Scanner;
public class Prims
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("enter n:");
int n=input.nextInt();
int number=2;
boolean primes[]=new boolean[n+1];
for(int i=0;i<=n;i++)
{
primes[i]=true;
}
while(number<=n)
{
for(int k=2;k<=n/k;k++)
{
if(primes[k])
{
for(int i=k;i<=n/k;i++)
{
primes[i*k]=false;
}
}
}
if(primes[number])
System.out.println(number);
number++;
}
}
}
Eratosthenes 找素数
最新推荐文章于 2024-08-13 15:20:56 发布