欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PTA L006连续因子

程序员文章站 2022-06-10 18:56:51
...

本来是考试题,结果拖了好久都懒得去想 :
题目:
PTA L006连续因子
给出代码:

#include <iostream>
#include <cmath>
using namespace std;
long int num, temp;
int main(void)
{
    cin >> num;
    int first = 0, len = 0, maxn = sqrt(num) + 1;//在平方根之后不可能存在连续因子,乘积必定大于所给的数字 
    for(int i = 2; i <= maxn; i++)//i是起始的地方 
	{
        int j; 
        temp = 1;
        for (j = i; j <= maxn; j++)//用j来不断构造连乘结构 
		{
            temp *= j;
            if (num % temp != 0) break;//有一个不符合就跳出 
        }
        if(j - i > len)//第一次是确定该因子的个数在两个以及两个以上,之后是不断更新最大的长度 
		{
            len = j - i;//j是从i开始的,最后j又加了一次,所以len不用再减一 
            first = i;//确认起始的元素 
        }
    }
    if(first == 0)//是素数或者是一的情况 
	{
        cout << 1 << endl << num;//只有一个连续因子便是自己本身(包括了为1的情况) 
    }
	else
	{
        cout << len << endl;//先输出最大的长度 ,这个大概的意思应该还是要就求出的长度len来输出所有的连续因子 
        for (int i = 0; i < len; i++)
		{
            cout << first + i;
            if (i != len - 1)
			cout << '*';
        }
    }
    return 0;
}