1. 程式人生 > >[HDU2136] Largest prime factor [線性篩]

[HDU2136] Largest prime factor [線性篩]

[ L i n k \frak{Link} ]


不要暴力素數分解。線性篩就行了。

#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; }