首页 > 代码库 > HDU 2136 Largest prime factor 参考代码
HDU 2136 Largest prime factor 参考代码
#include <iostream> #include <vector> #include <cmath> using namespace std; const int MAX=1000001; bool nums[MAX]; int indexes[MAX]; void eraosthenes() { int n=sqrt((double)MAX); for(int i=2; i<=n; i++) { int pos=i*i; while(pos<MAX) { nums[pos]=true; pos+=i; } } } void createIndexes() { eraosthenes(); int i,k=1; for(i=2; i<MAX; i++) if (nums[i]==false) indexes[i]=k++; int m=MAX/2; for(i=2; i<=m; i++) { if (nums[i]==false) { int pos=2*i; while(pos<MAX) { indexes[pos]=indexes[i]; pos+=i; } } } } bool run() { int n; if (scanf("%d",&n)==EOF) return false; printf("%d\n",indexes[n]); return true; } int main() { createIndexes(); while(run()); return 0; }
HDU 2136 Largest prime factor 参考代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。