PAT L1-006. 连续因子
原题链接
简单
作者:
青丝蛊
,
2021-04-01 18:49:01
,
所有人可见
,
阅读 168
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
cin >> n;
int len = 0, first = 0, m = sqrt(n); // first: 最长连续因子序列中最小的序列的第一项
for (int i = 2; i <= m; i++)
{
if (n % i == 0) // 举个例子:i = 5
{
int t = 1, j;
for (j = i; j <= m; j++)
{
t *= j; // 5 * 6 * 7 * 8 break
if (n % t)
break;
}
if (j - i > len) // 8 - 5 = 3
{
len = j - i; // len = 3
first = i; // first = 5
}
}
}
if (!first)
cout << 1 << endl << n;
else
{
cout << len << endl;
for (int i = 0; i < len; i++)
{
cout << first + i;
if (i != len - 1)
cout << '*';
}
}
return 0;
}