這題咱們能夠看到,須要求連續的因子,而且n不超過2^31,這就說明這個n是一個int類型的整數。咱們知道,12!就超過int了,因而這個連續因子涉及的範圍應該比較小!ios
因而咱們就只枚舉小區間[2, 50],而後須要注意的坑點就是:
1、不光該因子是n的因子,乘積也要是n的因子
2、若是是質數,可能就不存在其餘的因子,直接輸出1和它自己便可。算法
#include <iostream> using namespace std; int main() { int n, cur = 0, len = 0, l = 0, r = 0, mul = 1, book = 0; cin >> n; for (int i = 2, j; i <= 50; ++i) { for (j = i; j <= 50; ++j) { if (n % (mul * j) == 0) cur++, mul *= j, book = 1; else break; } if (cur > len) { len = cur; l = i, r = j - 1; } cur = 0, mul = 1; } if(!book) { cout << 1 << endl << n; return 0; } cout << r - l + 1 << endl; for (int i = l; i <= r; ++i) { if (i != r) cout << i << '*'; else cout << i; } return 0; }