C语言 200以内素数

用C语言编写一个程序,要求输出200以内所有素数。

程序是这样的,我运行了是真确的不知道是不是最简单的。
#include <stdio.h>
#include <math.h>
void main()
{int i,j,flag,count=0;
clrscr();
for(i=2;i<=200;i++)
{flag=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
{flag=0;
break;}
if(flag==1)
{printf("%5d",i);
count++;
if(count%10==0)printf("\n");}}}(count%10==0意思为每行十个数够十个换行)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-18
#include <cstdio>
#include <cmath>
bool prime (int x){
int y;
for (y=2;y<=sqrt(x);y++)
if (x%y==0) return false;
return true;
}
int main (){
int i;
printf ("2\n");
for (i=3;i<200;i+=2)
if (prime(i)) printf ("%d\n",i);
while (1);//查看结果用
return 0;
}

顺便提一下。

这是我学了一个星期做的程序。

你不要不相信速战的效果哟。

还有,输入n,求n以内所有的素数(其实很简单。)
#include <cstdio>
#include <cmath>
bool prime (int x){
int y;
for (y=2;y<=sqrt(x);y++)
if (x%y==0) return false;
return true;
}
int main (){
int n,i;
scanf ("%d",&n);
if (n>=2) printf ("2\n");
for (i=3;i<=n;i+=2)
if (prime(i)) printf ("%d\n",i);
while (1);//查看结果用
return 0;
}
第2个回答  2009-11-18
终于找到啦。我试过可以运行。
具体的就不解释啦。 这是我学习一个学期后编写的。
#include "stdio.h"
#include "stdlib.h"
int prime(int a);
void main()
{
int a,n,p,q;
int flagp,flagq;

printf("please input the max number:\n");
scanf("%d",&n);

for(a=1;a<=n;a++)
{
if(a%2!=0) continue;

p=1;
do
{
p++;
q=a-p;
flagp=prime(p);
flagq=prime(q);
}while(flagp*flagq==0);
printf("%d=%d+%d\n",a,p,q);
}
}

#include "math.h"
int prime(int a)
{
int i,k,t;
k=(int)sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>k)
t=1;
else
t=0;
return t;
}
第3个回答  2020-04-16
#include<stdio.h>
#include<math.h>
void main()
{
//求素数要把2给先放出来,从3开始求素数,设置动态中的静态count
int i,n,j;
int count;
printf("输入你想查找多少以内的素数\n");
scanf("%d",&n);
if(n>=2)
printf("2\n");
for(i=3;i<=n;i++)
{
count=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
count=0;
}
}
if(count==1)
{
printf("%d",i);
printf("\n");
}
}
}
最简单的方法
第4个回答  2009-11-19
#include<stdio.h>
#include<math.h>

int IsPrimNumber(int Num);

int main()
{

int i,flage;
for(i=1;i<=200;i++)
{
flage = IsPrimNumber(i);

if(flage == 1)
printf("%4d",i);
}
printf("\n");
return 1;
}

// 判断一个正整数是否是素数
int IsPrimNumber(int Num)
{
int i,k;

// 负数不能判断
if (Num <0)
{
printf("%d can not be dicedied prime number!\n",Num);
return 0;
}

// 素数
k = (int)sqrt(Num);
for (i=2;i<=k;i++)
{
if ((Num % i) ==0)
return 0;
}
if (i > k)
return 1;
else
return 0;
}