HDU 2136 Largest prime factor

来源:互联网 发布:指静脉算法 编辑:程序博客网 时间:2024/05/16 21:29

题目:

给一组正整数,对其中的每一个数,求出它的最大素因子是第几个素数。

链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=5

思路:
1.把素数排名作为数组的值。

2.初始时所有LPF[i]=0。  (倍数关系的两数  最大的质因数相同- -~!)

   2的倍数的LPF 赋为1。

   3的倍数的LPF 赋为2。

   5的倍数的LPF 赋为3。

   7的倍数的LPF 赋为4.......

3.话说 在HDU OJ上原来写while(cin>>a)Time Limit Exceeded 。

改成while(scanf)就过了。 -  -~!   

原因:cin对象的>>运算符返回的是NULL 当然可以不满足while的条件跳出

如#difine EOF -1 是不能跳出while的...


#include <cstdio>#define  N 1000001unsigned prime[N];int main(){    int count = 0;//memset(prime,0,sizeof(prime));for (unsigned i=2; i<N; ++i){if (!prime[i])  //当I为素数时{++count;for (unsigned j=1; i*j<N; j++)  //i的倍数LPF与i相同{prime[i*j] = count;}}}unsigned num;while(scanf("%u",&num) != EOF)printf("%u\n",prime[num]);return 0;}
PS:仔细审题  

0 0
原创粉丝点击