L1-006 连续因子----详细题解
程序员文章站
2022-06-10 18:57:21
...
不学?
将来,别人壁咚的墙,就是你砌的
题目链接
连续因子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;
}
上一篇: 改变文本框字体颜色的js脚本
下一篇: 湿疹能吃什么食物好,看完马上知道!