PTA L006连续因子
程序员文章站
2022-06-10 18:56:51
...
本来是考试题,结果拖了好久都懒得去想 :
题目:
给出代码:
#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;
}