//根據(jù)篩選法求出100以內(nèi)的所有素?cái)?shù),所謂篩選法是指從小到大篩去一個(gè)以知素?cái)?shù)的所有倍數(shù),
//例如,根據(jù)2我們可篩去4,6,8,...98,100等數(shù).然后根據(jù)3可篩去9,15,...99等數(shù)(注重此時(shí)6,
//12等數(shù)早就被篩去了),由于4被篩去了,下一個(gè)用于篩選的素?cái)?shù)是5...依次類推,最后剩余的就
//是100以內(nèi)的素?cái)?shù).
/*
*auther starshus
*
*Date 04/11/20
*/
//6.7.4
public class PRime
{
private static final int MAX=100;
public static void init(int[] num)//定義數(shù)組,里面裝從1到100
{
int i=0;
for(;i<MAX;i++)
{
num[i]=i+1;
}
}
public static int count(int[] num)//在程序運(yùn)行后,計(jì)算素?cái)?shù)個(gè)數(shù)
{
int n=0,i=0;
for(;i<MAX;i++)
{
if(num[i]!=0)//非素?cái)?shù)將被置零
n++;
}
return n;
}
public static void printf(int[] num)//輸出所有素?cái)?shù),每10個(gè)轉(zhuǎn)行一次
{
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;//假如不是素?cái)?shù),置零
}
i++;
}
j++;
i=j+1;
}
count=count(numbers);
printf(numbers);
System.out.println();
System.out.println("ok,we found "+count+"primes in "+MAX+" numbers.");
}
}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注