[HDU2136] Largest prime factor [線性篩]
阿新 • • 發佈:2018-10-31
不要暴力素數分解。線性篩就行了。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cstring>
#include<cctype>
using namespace std;
//int n, t, ans = 0;
int id = 0;
int ans[1000005];
//bool notprime[1000005];
int main() {
for (int i = 2; i <= 1000000; ++i) {
if (!ans[i]) {
++id;
for (int j = i; j <= 1000000; j += i) ans[j] = id;
}
}
int n;
while (~scanf("%d", &n)) {
// ans = 0;
// t = sqrt(n);
// int i = 1;
// for (; i <= prime[0] && prime[i] <= t; ++i) {
// if (n % prime[i] == 0 && n) ans = max(ans, i);
// while (n % prime[i] == 0 && n) n /= prime[i];
// if (!n) break;
// }
// if (n>1) {
// for (; i <= prime[0] && prime[i] <= n; ++i) {
// if (prime[i] == n) {
// ans = max(ans, i);
// break;
// }
// }
// }
// printf("%d\n", ans);
printf("%d\n", ans[n]);
}
return 0;
}