L1-006连续因子(详细注释),PAT团体程序天梯赛练习题

本文详细介绍了PAT团体程序天梯赛中L1-006题目的解题思路,包括连续因子的计算方法,并提供了原生代码的详细注释,帮助读者理解算法实现。
摘要由CSDN通过智能技术生成

原生代码来自:http://blog.csdn.net/qq_34594236/article/details/52123798。

我自己略加修改,添加注释,更容易理解

#include <iostream>
using namespace std;
#include <cmath>

int main()
{
	int num;			// 输入的数 
	int start, end;		// 序列起始位置 
	int len = 0;		// 因子序列长度初始为 0			 
	cin >> num;
	
	// 起始因子从2开始,到sqrt(num)结束,题目指明1不算在内 
	// 因为因子序列是连续的,所以后面的因子必然比前面的大,
	// 所以起始因子可以最大可以到sqrt(num)
	start = 2;
	for (int i = start; i <= sqrt(num); i++)
	{
		// 因为因子序列中的每个数都是num的因子,所以先判断是否是num的因子
		if (num % i == 0) 
		{
			int temp = num / i;		// 求出与 i 对应的另一个因子 
			// 确定结束因子 
			for (end = i + 1; end <= sqrt(num) + 1; end++)
			{
				// 同理,也要判断 j 是否是 temp 的因子
				if (temp % end == 0)
				{
					// 如果end是因子,则j递增,继续判断 
					temp /= end;
				 } else {	
					// end不是因子,退出循环
					break;
				} 
			} //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值