2021-03-12

L1-006 连续因子 (20 分)

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

输入格式:
输入在一行中给出一个正整数 N(1<N<2
​31
​​ )。

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

输入样例:
630
输出样例:
3
567
代码:

#include <stdio.h>
#include <math.h>

int factor(int n,int i);
int check(int p,int q);
int t;
int count;
int num;
int main (){


int max = 1;
int tem;
int j ;
scanf("%d",&num);
    j = num; //如果是质数 j是它本身
for(count = 2;count<=sqrt(num);count++){
    t = 0;
    tem = factor(num,count);

    if(tem > max ){
        max = tem;
        j = count;
    }
}
    //一种特殊情况 即 不是质数但没有连续因子 
    // 将J设置为最小因子 而不是它本身
if(max == 1){
    for(int i = 2;i<=sqrt(num);i++){
        if( num % i == 0)
            j = i;
    }
}
printf("%d\n",max);
for(int p=1;p<max;p++){
    printf("%d*",j);
    j++;
}
printf("%d",j);


return 0;
}
int factor(int n,int i){
    if(n%i==0 && check(t+1,count)){
        t++;
        i++;
       t = factor(n,i);
    }
    
    return t;
} //连续相除 返回相除位数


int check(int p,int q){
    
    int res = 1;
    for(int i = 1;i<=p;i++)
    {
     res *= q;
        q++;
    }
    if(num%res == 0)
        return 1;
    else 
        return 0;
} //检查连除的数是否是因子 从q开始连乘p位
1.刚开始写遇到的坑是质数,直接先 j = num;如果是质数直接输出它本身;
2.然后又遇到一个坑如: 14 = 2*7 这类没有连续因子的数
   //一种特殊情况 即 不是质数但没有连续因子 
    // 将J设置为最小因子 而不是它本身
if(max == 1){
    for(int i = 2;i<=sqrt(num);i++){
        if( num % i == 0)
            j = i;
    }
}

最后过了

embedcpp-2021-03一个有关嵌入式C++编程的课程,于2021年3月举办。嵌入式C++编程是指在嵌入式系统使用C++编程语言进行开发的一种方法。 在嵌入式系统,资源通常是有限的,例如处理器速度、内存容量和存储空间等。因此,使用C++编程语言可以提供更高的灵活性和效率,帮助开发人员充分利用有限的资源。C++在嵌入式系统的应用范围广泛,例如物联网设备、汽车电子和工业自动化等领域。 embedcpp-2021-03课程旨在向学员介绍嵌入式C++编程的基础知识和技巧。课程内容通常包括以下方面: 1. C++语法和特性:介绍C++的基本语法、面向对象编程和泛型编程等概念,以及C++11、C++14和C++17的一些新特性。 2. 嵌入式系统概述:了解嵌入式系统的基本特点、硬件和软件组成,以及与传统桌面开发的区别。 3. 低级编程:学习如何与硬件交互,包括使用寄存器、配置外设和处理断等。还可以介绍使用汇编语言优化性能的技巧。 4. 内存管理:探讨嵌入式系统的内存管理技术,包括堆栈和堆的使用、动态内存分配和对象生命周期管理等。 5. 实时操作系统(RTOS):介绍嵌入式系统常用的实时操作系统,如FreeRTOS和µC/OS等,学习如何使用RTOS进行任务调度和资源管理。 除了理论知识,embedcpp-2021-03课程通常还包括实际的项目练习,以帮助学员将所学知识应用于实际场景。通过该课程,学员可以了解嵌入式C++编程的基础概念和实践技巧,为嵌入式系统开发提供了一定的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值