从键盘输入一个整数,判断它是否为素数

用C++编

算法如下(已运行通过):
#include"iostream.h"
#include"math.h"
#define N 1000
bool fun(int n)
{
int i;
if(n<=2) return 1;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}
void main()
{
int n;
cout<<"请输入你要判断的数n:"<<endl;
cin>>n;
if(fun(n))
cout<<"n是素数!"<<endl;
else
cout<<"n不是素数!"<<endl;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-25
补充一下,求素数的方法还是有很多的,比如:

<1>遍历2以上N的平方根以下的每一个整数,是不是能整除N;(这是最基本的方法)

<2>遍历2以上N的平方根以下的每一个素数,是不是能整除N;(这个方法是上面方法的改进,但要求N平方根以下的素数已全部知道)
<3>采用Rabin-Miller算法进行验算;本回答被网友采纳
第2个回答  2014-01-25
#include <stdio.h>
#include <math.h>

void main()
{
int IsPrime(int);
int n;
printf("\n\n请输入一个数:");
scanf("%d",&n);
if(IsPrime(n))
printf("\n %d 是素数\n",n);
else
printf("\n %d 不是素数.\n",n);
}

int IsPrime(int Num)/*是素数返回1,否则返回0*/
{
int i, MaxDivisor = (int)sqrt(Num);
if (Num <= 2) return 0;
for (i=2; i<=MaxDivisor; i++) {
if (Num%i == 0) return 0; /*Num能被i除,说明不是素数,返回0*/
}
return 1;
}
第3个回答  2017-07-07
int Main()
{
int x,y,y1,z;
printf("please input for x\n");
scanf("%d",&x);
z=x;
for(y=2;y<z;y++)
{
z=x/y;
if(x == y*z)
printf("%d不是素数",x);
return 0;
}
printf("%d是素数",x);
return 0;
}
第4个回答  2014-01-25
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
bool prime; int i,n,k;
cin >> n;
k=int(sqrt(double(n)));
for (i=2;i<=k;i++)
{
prime=true;
if (n%i==0)
{
prime=false;
break;
}
else
{
prime=true;
}
}
if (prime)
{
cout << "yes";
} else
{
cout << "no";
}
return 0;}