【埃氏筛法求素数】简单易懂!!!
用“埃氏筛法”求2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。
之前自己做的时候方向错了,导致花了挺久总是出bug,痛定思痛决定重新换个思路! 我的思路是构造一个static类方法,即实现一个数组A,对数组中值***B的倍数***的剔除! 然后依题意就是调用三次类方法就做出来了!!
欢迎关注和交流! 随手点赞是种美德! 关注我,一起学习!!
以下是源代码:
package Program_1;
public class Week3 {
public static void main(String agrs[])
{
int i=0;
int Arrys2[] = new int[100];
for(int k=0;k<Arrys2.length;k++)
Arrys2[k]=k+1;
System.out.println("去掉2的倍数后:");
MoveNumbers(Arrys2,2);
while(i<Arrys2.length)
{
if(Arrys2[i]!=0)
System.out.print(","+Arrys2[i]);
i++;
}
System.out.println("-");
System.out.println("去掉3的倍数后:");
MoveNumbers(Arrys2,3);
i=0;
while(i<Arrys2.length)
{
if(Arrys2[i]!=0)
System.out.print(","+Arrys2[i]);
i++;
}
System.out.println("-");
i=0;
System.out.println("去掉5的倍数后:");
MoveNumbers(Arrys2,5);
while(i<Arrys2.length)
{
if(Arrys2[i]!=0)
System.out.print("," + Arrys2[i]);
i++;
}
}
public static void MoveNumbers(int agrs[],int x)
{
for (int i=0;i<agrs.length;i++)
if(agrs[i]%x==0&&agrs[i]>x)
agrs[i]=0;
}
}
|