前言:本期是关于pta题目:连续因子的详解,今天你c了吗?

题目: 

一个正整数 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

代码实现: 

#include<stdio.h>
#include<math.h>
int is_prime(int n)
{int j = 0;for (j = 2; j <= sqrt(n); j++){if (n % j == 0){return 0;}}return 1;
}
int main()
{int n = 0;scanf("%d", &n);if (is_prime(n)){printf("1\n");printf("%d", n);}else{int i = 0;int str = 0;int len = 0;for (i = 2; i <= sqrt(n); i++){int ret = 1;int k = 0;for (k = i;ret*k<=n;k++){ret *= k;if (n % ret == 0 && k-i+1>len){str = i;len = k - i + 1;}}}printf("%d\n", len);for (i = str; i < str + len; i++){if (i == str + len - 1){printf("%d", i);}else{printf("%d*", i);}}}return 0;
}

代码解读:

part 1:判断n是否为素数

    int n = 0;scanf("%d", &n);if (is_prime(n)){printf("1\n");printf("%d", n);}

读取一个整数n后,首先判断其是否为素数

若为素数:素数的因子只有1和它本身,由于题目要求1不算在因子行列,故而素数的因子个数为1

素数的因子是它本身

以下是判断是否为素数的函数:是素数return 1  不是素数return 0

注意:使用库函数sqrt 需要包含头文件: #include<math.h>

int is_prime(int n)
{int j = 0;for (j = 2; j <= sqrt(n); j++){if (n % j == 0){return 0;}}return 1;
}

part 2 :找到并记录连续因子序列

        int i = 0;int str = 0;int len = 0;for (i = 2; i <= sqrt(n); i++){int ret = 1;int k = 0;for (k = i;ret*k<=n;k++){ret *= k;if (n % ret == 0 && k-i+1>len){str = i;len = k - i + 1;}}}

1. 循环出2~sqrt(n)之间的所有数字

一个整数的因子的所有可能性在2~sqrt(n)之间,题目告知1不算在因子行列

2. 每一个数字都要进行自己的累乘

从这个数字本身开始,分别乘以后面的数字:

每次乘以一个值,都要进行判断此时的累乘结果是否能被n整除,直至累乘的结果超过n本身

若是累乘结果能被n整除,说明当前由一些乘在一起的数字都是n的因子,

说明找到了一个连续的因子序列,此时需要记住这个连续因子序列的开头和长度

(知道开头和长度就可以知道这个序列的起始和末尾)

定义str来记住当前连续因子序列的开头 ,定义len记录当前连续因子序列的长度

注意:记录下当前连续因子序列后,此时当前数字从自己开始的累乘已经结束了,下一次循环是另一个数字从自己开始的累乘的进行,又可能会找到存在于自它开始向后的数字中的连续因子序列

由于我们要寻找的是最长的因子序列,故而若是新的连续因子序列长度>原来的连续因子长度

就需要更新连续因子序列,故而判断并记录连续因子序列的代码如下:

                if (n % ret == 0 && k-i+1>len){str = i;len = k - i + 1;}

part 3 :打印输出

        printf("%d\n", len);for (i = str; i < str + len; i++){if (i == str + len - 1){printf("%d", i);}else{printf("%d*", i);}}

最后一个数字不需要*,其他位置的数字输出格式为:%d*

str:连续因子序列的开头

str+len-1:连续因子序列的末尾

PTA L1-006 连续因子(详解)相关推荐

  1. Talib技术因子详解(四)

    talib安装方式:pip install Ta-lib Tushare数据获取请参考:金融量化分析基础环境搭建 数据获取代码请参考:Talib技术因子详解(一) 26.MACD 异同移动平均线,调用 ...

  2. Talib技术因子详解(三)

    talib安装方式:pip install Ta-lib Tushare数据获取请参考:金融量化分析基础环境搭建 数据获取代码请参考:Talib技术因子详解(一) 17.ADX 平均趋向指数,调用方式 ...

  3. Talib技术因子详解(二)

    talib安装方式:pip install Ta-lib Tushare数据获取请参考:金融量化分析基础环境搭建 数据获取代码请参考:Talib技术因子详解(一) 11.SAR 阶段中点价格SAR指标 ...

  4. L1、L2正则化详解

    正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...

  5. tikhonov正则化 matlab_4 L1和l2正则化详解(花书7.1 参数范数惩罚)

    7.1 参数范数惩罚 许多正则化方法通过对目标函数 添加一个 参数范数惩罚 ,限制模型(如神经网络.线性回归和逻辑回归)的学习能力.将正则化后的目标函数记为: 其中 是权衡范数惩罚项 和标准目标函数 ...

  6. PTA L1-003 个位数统计(详解)

    前言:本期是关于pta题目:个位数统计的详细解法,今天你c了吗? 题目:  给定一个 k 位整数 N=dk−1​10k−1+⋯+d1​101+d0​ (0≤di​≤9, i=0,⋯,k−1, dk−1 ...

  7. CUP 三级缓存L1 L2 L3 cahe详解

    一   三级缓存(L1.L2.L3)是什么? 以近代CPU的视角来说,三级缓存(包括L1一级缓存.L2二级缓存.L3三级缓存)都是集成在CPU内的缓存,它们的作用都是作为CPU与主内存之间的高速数据缓 ...

  8. PTA L1-002 打印沙漏(详解)

    前言:本期是关于pta题目打印沙漏的具体解法,今天你c了吗?  题目: 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ********* ...

  9. PTA第六章作业详解

  10. PTA 7-33 有理数加法(详解)

    前言:本期是关于有理数加法的具体解法,今天你c了吗? ​​​​​​​ 题目: 本题要求编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数, ...

最新文章

  1. python list 删除元素_Python的list循环遍历中,删除数据的正确方法
  2. VScode 乱装插件环境破坏踩坑自我反思总结
  3. iOS知识小集·NSNumber to NSString出错啦
  4. 一个就简单的数学题 NYOJ 330
  5. TCP/IP的二层负载
  6. node.js中对Event Loop事件循环的理解
  7. Redhat ssh服务登录慢
  8. 我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
  9. ssl初一组周六模拟赛【2018.3.24】
  10. 路径规划之 A* 算法
  11. python更改整列小时分钟_利用python对excel中一列的时间数据更改格式操作
  12. 捷克论坛 最新ip_巧说:论坛外链如何正确的建设发布『 不易删』
  13. win7系统无法连接蓝牙的强推方案
  14. A/Btest (A/B测试)的营销策略效果分析
  15. 微信网页/微信小程序内实现长按识别二维码
  16. 校园二手物品交易平台实现查询交易订单情况功能
  17. 这些车企在企业微信里,装上高速的“组织引擎”
  18. 基因结构注释软件PASA安装全纪录
  19. 外包三年准备跳槽了!
  20. 快消品企业如何逆境中求胜

热门文章

  1. 在ASP.NET 中检测手机浏览器(转)
  2. 【算法图解】——算法必备
  3. oop练习(第11周)
  4. 【NLP】jieba分词
  5. [单片机框架] [kv_sys] 实现一个简易KV键值系统(最终版)
  6. 要想文章上Google搜索引擎首页,SEO 要做好下面7个点优化
  7. EAS BOS 单据开发 自定义枚举+下拉列表
  8. LMT and ASSM
  9. Python中的pillow(PIL)
  10. 关于webrtc的多人视频会议的杂乱记录