天梯赛

L1-006 连续因子
关键在于,不是先找这个数的所有因数,然后再看有没有连续的,最长的是多少。(这很人类思维)
我们应该从2开始遍历,看看能否找到某些连续的数符合条件。

代码

int main()
{
	ios::sync_with_stdio(false); cin.tie(nullptr);
	ll n;
	cin >> n;
	int first=0, len = 0;
	int i, j;
	for (i = 2; i <= sqrt(n); i++) {
		ll tmp = 1;
		for (j = i;; j++) {
			tmp *= j;
			if (n % tmp)
				break;
		}
		if (j - i > len) {     //>号决定了输出的为最小序列
			first = i;
			len = j - i;
		}
	}
	if (first == 0)//n为质数
		cout << 1 << endl << n;
	else {
		cout << len << endl;
		for (int i = 0; i < len - 1; i++)
			cout << i + first << '*';
		cout << first + len - 1;
	}
}

参考大佬

原文地址:https://www.cnblogs.com/lingshi321/p/14683566.html