基础题,注意输出格式,最后一个输出数字后面也有空格。
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN = 65536;
int isPrime[MAXN];
int main()
{
memset(isPrime, 0, sizeof(isPrime));
for (int i = 2; i < sqrt(MAXN); i++)
{
for (int j = i * i; j < MAXN; j += i)
isPrime[j] = 1;
}
int Case = 1;
int n;
while (cin >> n)
{
if (n < 0)
break;
if (Case > 1)
cout << endl;
cout << "Case " << Case++ << "." << endl;
for (int i = 2; i < MAXN; i++)
{
if (isPrime[i] == 0 && n % i == 0)
{
cout << i << " ";
int num = 0;
while (n % i == 0)
{
n /= i;
++num;
}
if (n == 1)
{
cout << num << " " << endl;
break;
}
else
cout << num << " ";
}
}
}
return 0;
}
继续加油。