分解质因数求教
写了一个按格式输出质因数的程序,结果是对的,但是对这个输出部分有些疑问,按道理说最后一个质因数后面不是还有一个星号(*)吗?代码如下:
#include<iostream>
using namespace std;
bool isPrime(unsigned n) {
for (int i = 2;i <= sqrt(n);i++)
if (n % i == 0)
return false;
return true;
}
int main() {
unsigned a;
cout << "Enter a plus integer: ";
cin >> a;
cout << a << "=";
for (int i = 2;i <= a / 2;i++)
if (a % i == 0 && isPrime(i))
{
cout << i <<"*";
a = a / i;
i = 1; //这里应该是1而不是2
}
cout << a << " ";
return 0;
}
输出如下:
12=2*2*3
这个结果是对的,但最后一个质因数后面的“*”号去哪里了?