#include<iostream>
#include"math.h"
using namespace std;
bool isPrimeNumber(int number){//判断是否为素数
float sqrtOfNum=sqrt(number);
for(int j=2;j<=sqrtOfNum;j++)//从2到number的算术平方根迭代
if(number/j*j==number)//判断j是否为number的因数
return false;
return true;
}
void printNum(int number){//打印出<=number的所有质数
int j=0;
for(int i=2;i<=number;i++)
if(isPrimeNumber(i)==true){
cout<<("%-5d",i)<<"";
j++;
if(j%10==0)//每隔十个数字换行
cout<<endl;
}
}
int main(){
long start=time(NULL);
cout<<(bool)isPrimeNumber(29)<<endl;
printNum(1000);
long end=time(NULL);
cout<<endl<<"Time spent:"<<(end-start+1)<<endl;
}
C++100以内的素数代码:
#include<iostream>
#include<math.h>
using namespace std;
const int N=300;
bool prime[N];//布尔数组变量0、1
void primeNum(int a);
void printPrimeNum();
//主函数
int main()
{
primeNum(N);
printPrimeNum();
return 0;
}
//得到N以内的素数
void primeNum(int a)
{
int i,j,n=0;
for(i=2;i<a;i++)//第一轮筛选去掉2的倍数
{
if(i%2)prime<i>=true;
else prime<i>=false;
}
for(i=3;i<=sqrt((double)a);i++)//double(N)是将N强制转换为双精度整型,求平方根i=3,5,7,9
{
if(prime<i>)
for(j=2*i;j<N;j+=i)prime[j]=false;//第二轮筛选相当于j=ni,去掉3,5,7...的倍数
}//经过两轮筛选相当于去掉了2,3,5,7...的倍数
}
//打印N以内的素数
void printPrimeNum()
{
int i,n=0,primeList[N];
for(i=2;i<N;i++)
if((i==2)||(prime<i>))primeList[n]=i,n++;
cout<<N<<"以内的素数个数为:"<<n<<endl<<"它们分别是:"<<endl;
for(i=0;i<n;i++)cout<<primeList<i><<"";
}
1、首先建立一个工程和.c文件。
2、输入头文件和主函数。
3、定义变量类型并初始化。
4、输入整数。
5、求出m的算数平方根。
6、如果可以整除,说明不是素数,退出循环。
7、输出。
8、编译,运行。(注意运用数学函数时,要在头文件里加入#inclde)
判断一个正整数是否是素数的算法描述:
对于待判断数num,设k等于num的平方根,取2~k之间的数逐个被num取余,如果发现有一个是余数,则说明num不是素数;直到2~k之间没有一个数能够被num取余得0为止,说明num是一个素数。
C++程序代码:
#include "iostream"
#include "math.h"
using namespace std;
bool isPrimeNumber(int num) {
int i, k;
if(num < 2) {
return false;
}
if(num == 2) {
return true;
}
k = (int)(sqrt(1.0*num));
for(i=2; i<=k; i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
int main(){
int num = 23;
if(isPrimeNumber(num) == true) {
cout<}
else {
cout<}
return 0;
}
void pr(n)
{
int i;
for(i=1;iif(n/i!=0) cout<<"素数";
else cout<<"不是素数";
}
函数
prime(判断一个数是否为质数)
#include
#include
int main()
{
int i, m,k,flag=0;
printf("Enter a number: ");
scanf ("%d", &m);
k=sqrt(m);
i=2;
while(i<=k&&flag==0)
{
if (m % i == 0)
flag=1;
i++;
}
if (flag==0)
printf("%d is a prime number! \n", m);
else
printf("%d is not a prime number! \n",m);
}