数论——HDU - 2136
Posted helman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数论——HDU - 2136相关的知识,希望对你有一定的参考价值。
题目含义
找出一个数最大素数因子的序号
题目分析
我们可以在筛素数的同时,用这个素数标记它的倍数,说明这些倍数一定有它这个素数因子
这样筛一遍下来,一个数大的素数因子就会覆盖它小的素数因子
题目代码
#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;
以上是关于数论——HDU - 2136的主要内容,如果未能解决你的问题,请参考以下文章