设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;
}

本文转载:CSDN博客