Largest prime factor
题目大意:
任何数字都可以由素数组合,下面给定一个数字,求解组成它的最大素因子,位于素数表的第几个。
分析:
首先这个题看一下范围肯定是用筛法求素数
在筛法求素数中,有一步将某个素数的所有倍数置为非素数
这个题中这一步 将某素数的所有倍数 置为这个素数本身
需要注意 尽量使用scanf和printf 不然会超时
AC代码:
#include <iostream>
#define MAX 1000000
using namespace std;
int prime[MAX]={0};
int mark[MAX]={0};
int main()
{
for(int i=2,n=1;i<MAX;i++){ //筛法素
if(prime[i]==0){
mark[i]=n++; //记录素数所在素数表的位置
for(int j=i;j<MAX;j=j+i){
prime[j]=i;
}
}
}
int n;
while(~scanf("%d",&n)){
printf("%d\n",mark[prime[n]]);
}
return 0;
}