C++ 关于求 素数的问题
#include "stdafx.h"
#include<iostream>
using namespace std;
int prime(int n);
int main()
{
int n;
cout << "Enter a number between 13-100 :" <<endl;
cin >> n;
prime(n);
}
int prime(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
return 0;
else
return 1;
}
cout << i << endl;
}
}
最近刚开始学C++ 逻辑上还不是很清晰,这个求素数的代码 帮看一下~谢谢了~~
[解决办法]
首先得知道素数的数学定义 然后进行编码
你的可以优化一下
k=sqrt(m);
for(int i=2;i<=k;i++)
{ if(m%i==0)
break;
}
if(i>k)
是sushu
else
不是素数
[解决办法]
试模法效率不高,但可以从这几个地方调整
1.先判断奇偶性,大于2且为偶数的肯定不是素数了,奇偶判断只要做一次& 1即可
2.试模上界用数的平方根
[解决办法]
bool isPrime(unsigned int n){ unsigned int i = 2; while(i < n && (n % i)) { ++i; } return i == n;}