C语言:求1-100内素数,多几种方法,最好流程图也说下。

如题所述

#include "stdio.h"
int is_prime(int x)//判断是否是素数的函数,是素数,返回1,不是则返回0
{
int i;
for(i=2;i<=x/2;i++)
if(x%i==0)
return 0;
return 1;

}
void main()
{
int i,j=0;
for(i=1;i<=100;i+=2)//素数属于奇数,减少循环次数。
if(is_prime(i))
{
printf("4d%",i);
j++;
if(j%10==0&&j!=0)
printf("\n");//每行打印十个素数,
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-04
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n,a[101]={0};
for(i=1;i<=100;i++) /*a[0]不用*/
a[i]=i;
a[1]=0; /* 先挖掉a[1]*/
for(i=2;i<=sqrt(100);i++)
for(j=i+1;j<=100;j++)
{
if(a[j]!=0&&a[i]!=0&&a[j]%a[i]==0) /*这里是关键,显然必须先确保a[i]不为0*/
a[j]=0; /*把非素数挖掉*/
}
for(i=1,n=0;i<=100;i++)
{
if(a[i]!=0) /*选出素数*/
{
printf("%5d",a[i]);
n++; /*素数个数*/
}
if(n%10==0) /* 每十个换行*/
printf("\n");
}
printf("\n个数是%d\n",n);
}
第2个回答  2012-05-05
#include<stdio.h>
#include<math.h>
void sushu(int i)
{
int j,q=1;
if(i>=3)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
q=0;
printf("%d不是素数\n",i);
break;
}
}
if(q==1)printf("%d是素数\n",i);
}
else if(i==1||i==3)printf("%d是素数\n",i);
else if(i==2)printf("%d不是素数\n",i);
}
void main()
{
int i;
char c;
for(;;)
{
printf("请输入一个要判断的数:\n");
scanf("%d",&i);
sushu(i);
printf("是否要再次查找素数y/n?\n");
scanf(" %c",&c);
if(c=='n'||c=='N')break;
}