AcWing 1586. 连续因子
原题链接
简单
作者:
面朝大海
,
2024-04-17 17:51:26
,
所有人可见
,
阅读 10
难点:for(i=11;i>=1;i--)
想到最多有11个连续的因子,2*3*4*5*6*7*8*9*10*11*12=479,001,600
最少有1个连续的因子,14有一个最小的连续因子:2
#include<bits/stdc++.h>
using namespace std;
//最多几个因子?13个
int main()
{
int n;
cin>>n;
int i,j;
for(i=11;i>=1;i--)//!!!!!!!!!!-- :i=1长度为1指的是有一个因子2/3/7/。。。这个数他不是素数,算上自己,有最少三个因子,但都不连续(可以不是自己)
{
for(j=2;j<n/j;j++)//i位j相乘,j不限于13之内
{
int mum=1;
int tmp=0;
for(;tmp<i;tmp++)//i次
{
mum*=(j+tmp);//从j开始
if(mum>n) break;
}
if(tmp==i&&n%mum==0) {
// cout<<"1";
tmp=j;
cout<<i<<endl;
for(;tmp<i+j;tmp++)
{
if(tmp==j) cout<<tmp;
else cout<<"*"<<tmp;
}
//就算只有一个连续的因子,也要输出最小的那个因子
//并不是只有一个连续的因子就是素数
return 0;//正确结果输出完了再结束
}
}
}
cout<<1<<endl<<n;//素数
return 0;
}