求带有详细注释的用c语言编写的可产生一百到二百之间素数的程序
问题:求100-200之间的素数。
分析:设n是100到200之间的一个数,那么如果n不是一个素数,一定有一个2-15之间的一个因数。为什么是15,因为15*15 = 225>200.那么现在我们用排除法,用2,3,4……,15除100-200之
间的数如果这个数能整出说明就不是素数.
#include <stdio.h>
int main()
{
int array[120]; //用来保存100-200之间的每个数
int i,j;
for (i = 0;i<101;i++)
{
array[i]=100+i; //初始化这个数组
}
for (j=2;j<=15;j++) //用来遍历2-15之间的这14个数
{
for(i=0;i<101;i++) //用来遍历100-200之间的每个数
{
if (array[i]!=0&&array[i]%j==0) //判断试的数array[i]能否被j整出 array[i]=0的说明已经判断了不是素数
{
array[i]=0; //不是素数就将该数置为0
}
}
}
for (i = 0;i<101;i++)
{
if (array[i]!=0) //输出所有没有置为0的数,也就是100-200之间的素数
{
printf("%d ",array[i]);
}
}
}
运行结果:
P.S.其实这个题目中还可以优化,不用用2-15之间的每个数去试,只要用2-15之间的素数去试,至于为什么,LZ可以自己思考哈,希望能对你有帮助
能把程序给全吗,加上解释,谢谢了。已采纳
int main()
{
int i,j,t=0;//定义三个整型变量,i,j控制循环,t判断下面的if语句是否执行了。
for(i=100;i<=200;i++)
{
t=2;
for(j=2;j<i;j++)
{
if(i%j==0)//如果对从2到i-1的数遍历取余,若取余不为零,则说明i不为素数,则跳出此循环。
break;
t++;//若每次遍历都没执行以上的break语句,则说明该数为素数,t自增一次
}
if(t==i)//若t等于i,说明i是素数,则输出素数
printf("%-5d",i);
}
return 0;
}