一个根据筛选法求出100以内的所有素数的小程序

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

//根据筛选法求出100以内的所有素数,所谓筛选法是指从小到大筛去一个以知素数的所有倍数,

//例如,根据2我们可筛去4,6,8,...98,100等数.然后根据3可筛去9,15,...99等数(注意此时6,

//12等数早就被筛去了),由于4被筛去了,下一个用于筛选的素数是5...依次类推,最后剩余的就

//是100以内的素数.

/*

*auther starshus

*

*Date 04/11/20

*/

//6.7.4

public class Prime

{

private static final int MAX=100;

public static void init(int[] num)//定义数组,里面装从1到100

{

int i=0;

for(;i<MAX;i++)

{

num[i]=i+1;

}

}

public static int count(int[] num)//在程序运行后,计算素数个数

{

int n=0,i=0;

for(;i<MAX;i++)

{

if(num[i]!=0)//非素数将被置零

n++;

}

return n;

}

public static void printf(int[] num)//输出所有素数,每10个转行一次

{

int i=0,n=0;

for(;i<MAX;i++)

if(num[i]!=0)

{

System.out.print(num[i]+" ");

n++;

if(n%10==0)

System.out.println();

}

}

public static void main(String[] args)//主方法

{

int i=2,j=1;

int count;

int[] numbers = new int[MAX];

init(numbers);

while (j<MAX)

{

if(numbers[j]!=0)

while (i<MAX)

{

if(numbers[i]!=0)

{

if(numbers[i]%numbers[j]==0)

numbers[i]=0;//如果不是素数,置零

}

i++;

}

j++;

i=j+1;

}

count=count(numbers);

printf(numbers);

System.out.println();

System.out.println("ok,we found "+count+"primes in "+MAX+" numbers.");

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航