题目链接:Large prime factor
水题....
思路:快速筛,先求出素数,从小到大把这个素数的倍数标记为非素数,这样未被标记的就是素数,而且题目要求是求出一个数最大因子的序号,这样从小到大处理完之后就是所求的答案!
#include<iostream>
using namespace std;
const int N = 1000000;
int prime[N] = {0},num_prime = 0;
int main() {
for(int i = 2 ; i < N ; i ++) {
if(!prime[i]){
num_prime ++;
for(int j = i; j < N ; j += i) { // 把这个素数的倍数标记为非素数
prime[j] = num_prime; // 标号为该素数的编号
}
}
}
int n;
while(scanf("%d",&n) !=EOF){
printf("%d\n",prime[n]);
}
return 0;
}