欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > L1-006 连续因子*

L1-006 连续因子*

2025/2/6 12:06:28 来源:https://blog.csdn.net/2301_79690805/article/details/145422315  浏览:    关键词:L1-006 连续因子*

1.题意

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

这两句话非常重要也非常难理解,翻译一下:

要求编写程序,求出最长连续因子中的因子个数,并输出最小的连续因子序列

2.代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>using namespace std;typedef long long LL;LL n;int main(void)
{cin>>n;//输入int res = 0;int l = 1;//连续因子最小值for(int i = 2; i <= sqrt(n) ; i++){int temp = n;//暂存int count = 0;//计算连续因子个数for(int j = i; temp%j == 0&&temp!=0;j++)//重中之重!{temp /= j;count ++;}更新if(res<count){res = count;l = i;}}//特判if(res == 0){cout<<1<<endl<<n;return 0;}cout<<res<<endl<<l;//按要求输出for(int i=l+1;i<=l+res-1;i++){cout<<"*"<<i;}return 0;
}

3.理解

for(int j = i; temp%j == 0&&temp!=0;j++)

以N=630为例:

i从2开始遍历,j=2继续,j=3继续,j=4时不满足temp%j == 0,退出遍历,count=2,更新!

i=3,j=3继续,j=4不满足temp%j == 0,退出遍历,count=1

i=4,j=4不满足temp%j == 0,退出遍历,count=0

i=5,j=5继续,j=6继续,j=7继续,j=8不满足temp%j == 0,退出遍历,count=3,更新!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com