【题目21】判断一个数是否为素数
2009-09-19 20:17
519 查看
1. 判断一个数是否为素数,根据素数的定义来求解
2. 根据下面这条定理来求解
定理: 如果n不是素数, 则n有满足1<d<=sqrt(n)的一个因子d.
3. 根据筛选法来求N以内的所有素数
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;
}
相关文章推荐
- 一道笔试题 题目是这样的:判断一个小于1000的正整数是否为素数。
- Python实遍历二维数组题目一:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- .循环输入一个数,判断是否为素数
- 如何判断一个数是否为素数
- 算法总结:判断一个数是否为素数
- 循环输入一个数,判断其是否是素数.Cpp
- 编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数(是素数返回true,否则false),自编main函数用于测试
- 判断一个数是否是素数的程序
- 1-11-6 - 定义isPrimer函数(判断一个数是否为素数)
- 如何判断一个数是否为素数
- 提高项目6.3-判断一个数是否是素数
- 如何判断一个数是否为素数
- 素数 判断一个数是否是素数+素数筛法
- 判断一个数是否为素数
- 【题目13】判断一个链表是否存在环
- 输入一个任意正整数,判断是否为素数
- 十一、判断一个数字是否是素数
- 如何判断一个自然数是否为素数
- 判断一个数是否为素数
- 判断一个数是否是素数。