用C语言循环结构求解1-100之间的所有素数。写出程序设计思路、关键语句及解释、程序输出结果

如题所述

*问题分析与算法设计
素数就是仅能衩1和它自身整除的整数。判定一个整数n是否为素数就是要判定整数n能否被除1和它自身之外的任意整数整除,若都不能整除,则n为素数。
程序设计时i可以从2开始,到该整数n的1/2为止,用i依次去除需要判定的整数,只要存在可以整除该数的情况,即可确定要判断的整数不是素数,否则是素数。
*程序与程序注释
#include<stdio.h>
void main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*输入求素数的范围*/
}while(!(n1>0&&n1<nm)); /*输入正确的范围*/
printf("...........PRIME TABLE(%d--%d)............\\n",n1,nm);
if(n1==1||n1==2) /*处理素数2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范围内的整数是否为素数*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j<i/2;j+=2)
/*判定能否被从3到整数的一半中的某一数所整除*/
if(!(i%j))flag=0; /*若能整除则不是素数*/
if(flag) printf(++count%15?"%4d":"%4d\\n",i);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-11
#include<stdio.h>
#include<math.h>
void main()
{
int i,n,k;
for(n=2;n<=100;n++)//1到100之间的数
{
for(i=2;i<=n-1;i++)//1到n之间的数 :如n=9,那么i只能在2到8之间;
if(n%i==0) break;//判断能否被整除
if(i>n-1)//判断运算的i是否大于n-1
printf("%d ",n);

} printf("\n");
}
第2个回答  2012-04-24
#include<cstdio>
bool a[101];
void prime()
{
//a[i]为false 代表i为素数。
a[1]=true;
for (int i=2;i<=100;i++)
for (int j=2;j*i<=100;j++)
a[i*j]=true;//枚举所有i*j<=100的数字,由于i>1,j>1则i*j一定不是素数。
}
int main()
{
prime();
for (int i=1;i<=100;i++)
if (!a[i]) printf("%d ",i);
return 0;
}
第3个回答  2012-04-30
#include<stdio.h>
#include<math.h>
void main()
{
int k,i,n;
for(n=2;n<=100;n++)
{ k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>k) printf("%d ",n);
}printf("\n");
}
第4个回答  2012-04-24
求素数是比较经典的编程,百度一下 文库里面很多求素数的,很详细!
相似回答