题目含义
找出一个数最大素数因子的序号
题目分析
我们可以在筛素数的同时,用这个素数标记它的倍数,说明这些倍数一定有它这个素数因子
这样筛一遍下来,一个数大的素数因子就会覆盖它小的素数因子
题目代码
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
typedef long long LL;
const int maxn=1000007;
int prime[maxn],num[maxn];
bool check[maxn];
int cnt=0;
void Prime(){
num[1]=0;
for(int i=2;i<maxn;i++)
if(!check[i]){
prime[cnt++]=i;
for(int j=1;j*i<maxn;j++){
check[j*i]=true;
num[j*i]=cnt;
}
}
}
int main(){
Prime();
int n;
while(~scanf("%d",&n)){
printf("%d\n",num[n]);
}
return 0;
}