C++问题 判断输入的一个数是否质数 不知道错在哪里

来源:百度知道 编辑:UC知道 时间:2024/09/24 17:20:47
#include<iostream.h>
void zhishu(int a)
{

int k=0;

for(int n=0;n<a;n++)
{
int b;
b=a%n;
if(b==0)k++;
}
if(k>2)
{
cout<<"不是质数"<<endl;
}
else
cout<<"是质数"<<endl;
}
int main()
{
int x;
cout<<"请输入一个整数"<<endl;
cin>>x;
zhishu(x);
return 0;
}

for(int n=0;n<a;n++)
会造成b=a%0;
就会出错

//素数判断
int IsPrime(n)
int n;
{
int i;
if (n==2) //排除n==22
return(1)
if (n%2==0) //排除n为偶数
return(0);
for(i=3;i<=n/2+1;i+=2) //n/2+1可以换为sqrt(n)+1;注意#include <math.h>,有自动类型转换
if (n%i==0) //所有的偶数都不是质数(排除了2),每循环一次i加2,比如4,6就不用考虑整除n了
return(0);
return(1);
}
上面是我的,请参考(判断素数是一个严重的问题,涉及很多密码的破解,在数学上有很多专业的方法(我学数学))

你的N的范围是从0到A-1吧!~~应该从1到A吧!~~
也就是说用B=A%(N+1)试一下~~~~