您的位置:首页 > 其它

【题目21】判断一个数是否为素数

2009-09-19 20:17 519 查看
1. 判断一个数是否为素数,根据素数的定义来求解

bool IsPrime(int n)
{
if(n < 1) return false;
for(int i = 2; i < n; i++)
if( n%i == 0)
return false;
return true;
}


2. 根据下面这条定理来求解

定理: 如果n不是素数, 则n有满足1<d<=sqrt(n)的一个因子d.

bool IsPrime2(int n)
{
if(n < 1) return false;
for(int i = 2; i < sqrt(n); i++)
if( n%i == 0)
return false;
return true;
}


3. 根据筛选法来求N以内的所有素数

#include <stdio.h>
#include <math.h>
#define N 10000
bool prime
;
bool IsPrime(int n) { if(n < 1) return false; for(int i = 2; i < n; i++) if( n%i == 0) return false; return true; }

bool IsPrime2(int n) { if(n < 1) return false; for(int i = 2; i < sqrt(n); i++) if( n%i == 0) return false; return true; }

void GetPrimes(int n)
{
int i, j;
for(i = 2; i < n; i++)
if(i%2)
prime[i] = true;
else
prime[i] = false;
for(i = 3; i < sqrt(n); i++)
if(prime[i])
for(j = i+i; j < N; j+=i)
prime[j] = false;
}

int main()
{
int m = 8, n= 13,count= 0;
if(IsPrime2(m))
printf("%d is a prime./n",m);
else
printf("%d is a not prime./n",m);
if(IsPrime2(n))
printf("%d is a prime./n",n);
else
printf("%d is a not prime./n",n);
GetPrimes(N);
for(int i = 0; i < N; i++)
{
if(prime[i])
{
count++;
printf("%d ",i);
}
}
printf("/nthe count of prime from 0 to 100: %d/n",count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: