Project Euler | Problem 3

Problem 3


Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143?


最大质因数

13195的质因数包括5、7、13和29。

600851475143的最大质因数是多少?


/*********************  Program 1  ***************************
* 思路:
*	1.从2开始,作为因数,因式分解目标数,
*	2.待2无法分解,则累加成3作为因数,继续分解
*	3.依次类推
*	4.待分解完毕,最后的因数(也是最大质因数)既是答案
* 收获:
*	1.1. 封装
*	1.2. 质因数 prime factor
*	1.3. %d & %ld & %lld
* 评价:
*	优点:
*		1.计算量较小,速度较快
*		2.用函数实现封装
*		3.采用因式分解的办法,对目标数进行分解
*	缺点:
*		1.没能找到一种快速判断质数的方法
*		2.在因子遍历的过程中,不可避免地要遍历合数
**************************************************************/

#define _CRT_SECURE_NO_WARNINGS
#define THE_AIM_NUMBER 600851475143

#include <stdio.h>

/*---------------------------------------------------------*/

//求 aimNumber 的最大质因数
// aimNumber 的取值范围: 1 ~ 18446744073709551615
unsigned long long GetMaxPrimeFactor(unsigned long long aimNumber)// 收获1.1~1.2
{
	unsigned long long i = 2;
	unsigned long long ret = 1;
	while (aimNumber > 1)
	{
		if (!(aimNumber % i))
		{
			aimNumber /= i;
			ret = i;
		}
		else
			i++;
	}
	if (ret == 1)
		return aimNumber;
	else
		return i;
}

int main()
{
	unsigned long long answer = GetMaxPrimeFactor(THE_AIM_NUMBER);
	printf("%lld\n", answer);// 收获1.3

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值