#include "stdio.h"
#include "math.h"
main()
{
int i,j,a[101];
for(i=0;i<=100;i )
a[i]=i;
#include "stdio.h"
#include "math.h"
main()
{
int i,j,a[101];
for(i=0;i<=100;i )
a[i]=i; /*给数组中的元素赋以相同下标的整数值*/
for(i=2;i<=sqrt(100);i )
{ if(a[i]==0) /*如果该数已经被处理成0值,退出循环*/
break;
for(j=i 1;j<=100;j )
{
if(a[j==0]) continue;/*如果该数已经被处理成0值,跳过此次循环*/
if(a[j]%a[i]==0)
a[j]=0; /*如果该数为非素数,赋予0值*/
}
}
for(i=2;i<=100;i )
{if(a[i]!=0) /*打印出素数*/
printf("%d ",a[i]);
if(i==0) /*打印10次换一行*/
printf("
");}
}
算法的思路:
第一次用2除从3到100的数,将被整除的数赋予0值
第二次用3除4到100的数(之前被2整除的数可以跳过)
,将被整除的数赋予0值
第三次用4除5到100的数,因为4在第一次的时候就已经被赋予了0值,所以这一步在我的程序中也被跳过。
第100的根号次,将被整除的数赋予0值(被之前所有的数整除的均跳过)
程序运行的结果与期望中的有点出入
结果是:
2.3.5.7.11.13.17.19.23.25.29。。。。。。。97
就想不明白 为什么25,35,55,65,85,95 这几个数没有被剔除
请高手赐教!
展开
全部