这一周心情很复杂,可以说在生活中挺爽的,玩得很开心,尝试了许多生活新鲜的玩法,但没怎么学习,这也许是我最大的悲愁,自己真的想学习,但坐在那里真心学不下去,可能心里太烦那件事了,人不是都相互利用的吗?或许以后习惯这事就好了,以后它不要想,不要猜,就当一份阅历。
这一周学了数论,说实话有许多没懂的,要仔细看看回放。学习一下前面很多没懂的东西。
现在了解的数论几乎是关于素数和因数的求解,而我们做的是如何设计好的算法,避免超时和运用技巧和数学知识来巧妙得出代码。
以后一定要学好算法,计算机行列里会算法可以提高很高阶层,工资奖金不知提高了多少。
不放弃,不言弃,不低头,加油。
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;
}