这题研究了很久。。先贴初版代码,写得很乱
#include <iostream> #include <cmath> using namespace std; int main () { int a, b; int sum; int isPrime(int a); cin >> a >> b; for (int i = a; i <= b; ++i) { cout << i << "="; // 是素数 if (isPrime(i)) cout << i; // 不是素数 else { int temp = i; sum = 1; int x = 2; while (sum != i) for (int j = x; sum != i && j <= i / 2; ++j) if (isPrime(j) && temp % j == 0) { sum *= j; temp /= j; cout << j; if (sum != i) cout << "*"; x = j; break; } } cout << endl; } return 0; } // 判断是否为素数,是就返回1,不是就返回0 int isPrime(int a) { const int False = 0; const int True = 1; int i; if (a == 1) return False; for (i = 2; i <= sqrt(a); ++i) if (a % i == 0) return False; return True; }