不学?
将来,别人壁咚的墙,就是你砌的
题目链接
连续因子
AC代码,里面有详细的注解
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
int len=0,start=0; ll pro=1; //len用来记录连续因子长度;start用来记录起始位置;Pro用作连乘迭代;
for (int i = 2; i <= sqrt(n); ++i) { //连续因子从2开始进行枚举
pro=1;
for (int j = i; pro*j <= n; ++j) { //Pro*j用来控制第二层循环退出;
pro*=j; // 连乘迭代;
if (n%pro==0&&j-i+1>len) //n%pro==0用来记录连乘因子是否为n的连乘因子,当j-i+1的长度大于len才交换,这样就可以满足题目的要求最小连乘因子
{ // 这个时候就要记录连乘因子的起始位置
start=i;
len=j-i+1;
}
}
}
if (start==0) //如果start==0,说明能为一个素数
{
start=n;
len=1;
}
cout<<len<<endl<<start;
for (int k = start+1; k < start+len; ++k) {
cout<<"*"<<k;
}
cout<<endl;
return 0;
}