在论坛上面看到这个有意思的题目,花了点时间给他搞了下。`
#include <iostream>
#include <cmath>
using namespace std;
bool isPrimenum(long m);
bool isprimeandnum(long num);//判断是否可以两个素数相乘
int main()
{
long i;
long num ;
long j = 1;
long tmp = num / 2;
//一个数的最大的约数一定小于它的一半
cin >> num;
cout << num << " = " ;
for (i = 2; i <= tmp; i++)
{
if (isPrimenum(i) && num % i == 0 )//判断i是否是素数,且要计算的数是否能被i整数
{
if(num % (j * i) == 0)
{
j *= i;
if (num / j != 1)//确定s是否就是要计算的数
{
cout << i << " * ";
tmp = num / j;
i = 1;
}
else
{
cout << i << endl;
tmp = num / j;
i = 1;
}
}
}
}
/*for(i = 2 ;i <= num; i ++)//查看从2到num有哪些数可以是两个素数的乘积
{
if(isprimeandnum(i)) cout << " is prime and prime" << endl;
//else cout << "is not prime and prime" << endl;
}*/
cin.get();
return 0;
}
//功能:判断素数
bool