编一函数,判断某一数是否是素数,找出1000以内的所有素数。

用C程里 函数章节 的概念来解答,哪位高手来解决一下,如果是老师那就更好了,o(∩_∩)o...

第1个回答  2009-11-27
#include<stdio.h>
#include<math.h>
bool isprime( int value)//判断一个数是否是素数
{
int i;
if(value%2==0)//是偶数的话直接返回false为后面减小复杂度
return false;
for ( i=3; i<=sqrt(value); i+=2)
if( value%i == 0)
return false;
return true;
}
int main()
{
for (int i=1; i<=1000; i++)//找出1000以内的素数
{
if( isprime(i) )//是素数则打印
{
printf("%-5d", i);
}
}
return 0;
}
有什么不懂的可能给我留言。
第2个回答  2009-11-27
//求某个正整数以内的素数
#include"stdio.h"
#include"math.h"
int main(void)
{
int count,i,m,n,num;
printf("请输入所求范围(正整数): ");
scanf("%d",&num);
count=0;//count记录素数的个数
printf("%d以内的素数为:\n",num);
for(m=2;m<=num;m++)
{
n=sqrt(m);
for(i=2;i<=n;i++)
{
if(m%i==0)
break;
}
if(i>n)//如果m是素数
{
printf("%6d",m);
count++;
if(count%10==0)//count为10的倍数时换行
printf("\n");
}
}
printf("\n");

return 0;
}
第3个回答  2009-12-01
思路:设当前要检查的数为i,则若从2到sqrt(i)都找不到一个数可以将i除尽,则i为素数。就这么简单。
代码如下:
#include"stdio.h"

bool isPrime(int i);
int main()
{
for (int i=2; i<1001; i++)
if (isPrime(i))
printf("%d ", i);

return 0;
}
bool isPrime(int i)
{
bool f = true;
for (int j=2; j<=sqrt(i); j++)
if (i%j == 0)
{
f = false;
break;
}
return f;
}
第4个回答  2009-11-27
# include <stdio.h>
# include <math.h>
void main ()
{
int i,j,k=0;
for (i=2;i<=1000;i++)
{
int temp=0;
for (j=2;j<=sqrt (i); j++)
{
if(i%j==0)
{
temp=1;
break;
}
}
if(temp==0)
{
k++;
printf("%5d",i);
if(k%5==0)
{
printf("\n");
}
}
}
}本回答被提问者采纳
第5个回答  2009-11-27
#include"stdio.h"

bool isPrime(int i);
int main()
{
for (int i=2; i<1001; i++)
if (isPrime(i))
printf("%d ", i);

return 0;
}
bool isPrime(int i)
{
bool f = true;
for (int j=2; j<i; j++)
if (i%j == 0)
{
f = false;
break;
}
return f;
}