筛选法求100以内的素数

/* 筛选法求100以内的素数 算法: (1)挖去1; (2)用下一个未被挖去的数P去除P后面各数,把P的倍数挖掉; (3)检查P是否小于n的开方的整数部分,如果是,则返回2继续执行,否则就结束。 (4)剩下的数就是素数。 */ #include #include //程序中用到求平方根函数sqrt void main() { int i,j,n,a[101]; //定义a数组中包含101个元素 for(i=1;i<=100;i++) //a[0]不用,只用a[1]到a[100] a[i]=i; //使a[1]到a[100]的值为1到100 a[1]=0; //先“挖掉”a[1] for(i=2;i<=sqrt(100);i++) for(j=i+1;j<=100;j++) { if(a[i]!=0 && a[j]!=0) //关系运算符!=为“不等于”,逻辑运算符&&为“与”,!为“非” if(a[j]%a[i]==0) a[j]=0; //把非素数“挖掉” } printf("/n"); for(i=1,n=0;i<=100;i++) { if(a[i]!=0) //选出值不为0的数组元素,即非素数 { printf("%5d",a[i]); //输出素数,宽度为5列 n++; //累计本行已输出的数据个数 } if(n==10) //输出10个数后换行 { printf("/n"); n=0; } } printf("/n"); } /*运行结果如下: -------------------------------------------------------- 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 -------------------------------------------------------- */

你可能感兴趣的:(c)