L1-006 连续因子(分数 20)

寻找正整数的最长连续因子序列
该博客介绍了一个编程问题,要求编写程序找出给定正整数N的最长连续因子序列。程序通过检查从2到平方根(N)的所有因子,记录连续因子的个数,并更新最长连续序列。当找到最长连续因子时,输出其长度和序列。对于质数,输出其本身。示例中,输入630,输出3个连续因子5、6、7。

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

输入格式:

输入在一行中给出一个正整数 N(1<N<231)。

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

630

输出样例:

3
5*6*7

问题分析 :

要判断一个数m是不是数n的因子,只需要看看这个数n对数m取模的值是否为零,如果为0,则数m是数n的因子。按照题意,一个数的连续因子只可能发生在这个数的平方根及其前面的因子,所以我们只需要查看从数2开始的因子连续因子数目,记录下来,然后再查看数3开始的连续因子数目,记录下来,以此类推直到数n的平方根。其中连续最长的长度最长的就是我们要找的。

注:并不是让你写出n所有的因子然后判断连续因子的长度,而是一次分解的因子连续因子的长度

两者并不相同。

代码实现

#include<stdio.h>
#include<math.h>
int main(){
    int n,j=0,y,num=0,maxnum=0,start=2;
    scanf("%d",&n);
    for(int i=2;i<=sqrt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值