其他分享
首页 > 其他分享> > L1-006 连续因子

L1-006 连续因子

作者:互联网

image


本来看到题目,我的第一反应是for循环找出N的所有因子,把他们存在一个数组里,然后把他们相乘,并排列成最长的连续因子,但是这样实现起来好像有点复杂,想到这是L1的题目,应该不会这么难,应该是我思路错了。

正解

用for循环,i从2开始到sqrt(N),记录从i开始的最长连续因子的个数count,如果比之前的max还要大,那么max=count,连续因子的起始位置start=i,遍历过后,start就是最长连续因子的起点,max是最长连续因子的长度,输出即可。

代码


#include<iostream>
#include<math.h>
using namespace std;

int main()
{
    int n,k,i,j,count,max_count=0,start;
    cin>>n;
    for(i=2;i<=sqrt(n);i++)
    {
        count=0;
        j=i;
        k=n;
        while(k%j==0)
        {
            k=k/j;
            j++;
            count++;
        }
        if(max_count<count)
        {
            max_count=count;
            start=i;
        }
    }
    if(max_count)
    {
        cout<<max_count<<endl;
        for(i=0;i<max_count-1;i++)
        {
            cout<<start+i<<"*";
        }
        cout<<start+i<<endl;
    }
    else
    {
        cout<<1<<endl<<n<<endl;
    }
    return 0;
}

注意

标签:count,max,start,因子,006,L1,最长,连续
来源: https://www.cnblogs.com/sxlo/p/16414641.html