设N(N >=4)为合数,则必有N = i * j; 1 < i, j < N, 不妨设 i <=j, 则有 2 <= i <= floor(sqrt(N)), 也就是说,如果N为合数,则必有因子在2到floor(sqrt(N))之间,素数判断程序如下:
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int n)
{
if(n < 2)
return false;
int i, k = sqrt(n);
for(i = 2; i <= k; i++)
if(0 == n % i)
return false;
return true;
}
int main()
{
int i;
for(i = -50; i < 50; i++)
if(isPrime(i))
cout << i << " ";
cout << endl;
return 0;
}