第十一周 周记

这一周心情很复杂,可以说在生活中挺爽的,玩得很开心,尝试了许多生活新鲜的玩法,但没怎么学习,这也许是我最大的悲愁,自己真的想学习,但坐在那里真心学不下去,可能心里太烦那件事了,人不是都相互利用的吗?或许以后习惯这事就好了,以后它不要想,不要猜,就当一份阅历。
这一周学了数论,说实话有许多没懂的,要仔细看看回放。学习一下前面很多没懂的东西。
现在了解的数论几乎是关于素数和因数的求解,而我们做的是如何设计好的算法,避免超时和运用技巧和数学知识来巧妙得出代码。
以后一定要学好算法,计算机行列里会算法可以提高很高阶层,工资奖金不知提高了多少。
不放弃,不言弃,不低头,加油。
Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.
InputEach line will contain one integer n(0 < n < 1000000).
OutputOutput the LPF(n).
Sample Input1
2
3
4
5Sample Output0
1
2
1
3`

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int vis[1000000 + 10], ans[1000000 + 10];
int eractor()
{
	int cnt = 1;
	ans[1] = 0;
	for (int i = 2; i <= 1000000; i++)
	{
		if (vis[i] == 0)
		{
			ans[i] = cnt++;
			vis[i] = 1;

		for (int j = i + i; j <= 1000000 ; j += i)
		{
			vis[j] = 1;
			ans[j] = ans[i];
		}}

	}
	return 0;

}
int main()
{
	memset(vis, 0, sizeof(vis));
	eractor();
	int n;
	while (~scanf("%d", &n))
	{
		printf("%d\n", ans[n]);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值