c语言编程:从小到大输出前100个素数,每行输出5个

如题所述

用纯C的版本如下
#include <stdio.h>
#include <math.h>
bool isprme(int k)
{
int i;
for( i=2; i<=sqrt(k); i++)
if(k%i==0)return 0;//根据素数定义 如果被2到小于自己开方的数整除就不是素数函数返回假
return 1;都不能整除就返回真
}
int main()
{
int i,l=0;
for(i=2; i<=100; i++)
{
if(isprime(i)==true){printf("%d ",i);l++;}//是素数就输出,计数器更新增1;
if(l%5==0)printf("\n");//计数器到整除5就换行
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-27
#include <stdio.h>

int prime(int m) //判断一个数是否是素数
{
int i;
for(i=2; i<=m/2;i++)
if (m%i==0) return 0;
return 1;
}

int main(int argc, char* argv[])
{
int cnt = 0; //用于计算素数的个数
int num = 0; //用于控制素数的输出
int i = 2;
while(1)
{
if (prime(i))
{
cnt++;
printf("%3d ", i);
num++;
if(num%5==0)
printf("\n");
}
if(cnt==100)
break;
i++;
}

return 0;
}本回答被提问者采纳
第2个回答  2012-03-27
# include <stdio.h>
# include <stdlib.h>
#include <math.h>

int IsZhiShu(int num)
{
int nLoop,flag;
if (num==1) return false;//1既不是素数也不是质数
if (num==2) return true;
for (flag=1,nLoop=2;nLoop<=sqrt(num);nLoop++)
{
if (num%nLoop==0)
{
flag=0 ;
break;
}
}
return flag;
}

void main()
{
int Number,nCnt;
nCnt = 0, Number = 2;
do
{
if(IsZhiShu(Number))
{
nCnt++;
printf("%d ",Number);
}
Number++;
}while(nCnt<100);
system("PAUSE");
}本回答被网友采纳
第3个回答  2012-03-27
# include <strenm.h>
main ()
{int m,i;
for(m=3;m<=100;m+2)
{if(m%i==0)
break;
if(i>m-1)
printf(" 2 ");
if(m+1)%2==0;
printf("\n");
printf("%d ",m);

}

}
第4个回答  2012-03-27
void sushu()
{
int arr[50]={0};
int k=0;
for(int i=2;i<100;i++)
{
int c=0;
for(int j=2;j<i;j++)
{
if(i%j==0)
c++;
}
if(c==0)
{
arr[k]=i;
k++;
}
}
for(int i=0;i<50;i++)
{
if(arr[i]==0)
return;
cout<<arr[i]<<" ";
if(i!=0&&i%5==0)
cout<<endl;

}
}