7.10

#include<iostream>
#include<cmath> 
using namespace std;
typedef long long ll;
int start, len;//序列开始因子和连续因子个数  
int main()
{
    cin.tie(0);
    ll N;
    cin >> N;
    int start = 0, len = 0;
    for(int i = 2; i <= sqrt(N); i++ )
    {
        int j = i, sum = 0;
        int n = N;
        while(n % j == 0)
        {
            n = n / j;
            j ++;
            sum ++ ;
        }
        
        if(sum > len)
        {
            start = i;
            len = sum; //更新个数 
        } 
    }
    if(start == 0)//N是质数,只有自己一个因子 
    {
        start = N;
        len = 1;
    }
    cout << len << endl << start;//输出长度和第一个连续因子 
    for(int i = start + 1; i < start + len; i++) 
    cout << "*" << i;
    
    return 0; 
}

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

今天就打了一个代码,我觉得这个好难,这个写了一直出错后来在网上查找改正才成功,花了好长时间

网课学习了创建对象及其内存情况

posted @ 2023-07-10 19:38  徐星凯  阅读(62)  评论(0编辑  收藏  举报