这题咱们能够看到,须要求连续的因子,而且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; }