目录
一、题目内容
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
二、输入描述
输入在一行中给出一个正整数 N(1<N<2^31)。
三、输出描述
首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按
因子1*因子2*……*因子k的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。
四、输入输出示例
630
3
5*6*7
五、完整C语言代码
AC代码~
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
long long int N;
int count,a;
int max = 0;
int begin;
scanf("%lld",&N);
for(int i=2;i<=sqrt(N);i++){
a = N;
count = 0;
int j = i;
while(a % j == 0){
a /= j;
j++;
count++;
}
if(count > max){
max = count;
begin = i;
}
}
if(max){
printf("%d\n",max);
printf("%d",begin);
for(int c=1;c<max;c++)
{
printf("*");
printf("%d",begin+c);
}
printf("\n");
}
else // N为质数的情况
printf("1\n%d",N);
return 0;
}
本文介绍了如何使用C语言编写程序,计算给定正整数N的最长连续因子个数,并输出最小的连续因子序列。通过遍历和除法操作找到连续因子并更新最大值。
1万+

被折叠的 条评论
为什么被折叠?



