质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,即不再有其他的因数。
如下:
判断思路:
对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。(因为 i*i= n 时, i 时中间的那个因子)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number, count=0/*因子数*/;
vector<int> primes;
cin >> number;
for(int i=2; i*i<=number; i++) //利用for(int i=2; i<=number; i++)求出的因子数排好了序
{
if(number%i == 0)
{
count = count+2;
primes.push_back(i);
primes.push_back(number/i); //这个里面的因子数没有排序
cout << number << ‘=‘ << i << ‘*‘ << number/i << ‘ ‘;
}
}
cout << endl;
cout << "因子数:" << count << endl;
for(int i=0; i<primes.size(); i++)
{
cout << primes[i] << ‘ ‘;
}
cout << endl;
system("pause");
return 0;
}
一种更快的判断方法:
bool
isPrime(unsigned
long
n) {
if
(n <= 3) {
return
n > 1;
}
else
if
(n % 2 == 0 || n % 3 == 0) {
return
false
;
}
else
{
for
(unsigned
short
i = 5; i * i <= n; i += 6) {
if
(n % i == 0 || n % (i + 2) == 0) {
return
false
;
}
}
return
true
;
}
}