hdu2136 Largest prime factor(C语言)
2017-08-01 17:00
316 查看
Problem Description
Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.
Input
Each line will contain one integer n(0 < n < 1000000).
Output
Output the LPF(n).
Sample Input
1
2
3
4
5
Sample Output
0
1
2
1
3
Author
Wiskey
Source
HDU 2007-11 Programming Contest_WarmUp
C语言AC代码
筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。)
先解释一下筛选法的步骤:
<1> 先将1挖掉(因为1不是素数)。
<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3> 用3去除它后面的各数,把3的倍数挖掉。
<4> 分别用5…各数作为除数去除这些数以后的各数。
上述操作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的倍数大于1的全部置0,3的倍数大于1的全部置0,4的倍数大于1的全部置。一直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好。
必须附一个神的链接:http://blog.csdn.net/morewindows/article/details/7347459
Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.
Input
Each line will contain one integer n(0 < n < 1000000).
Output
Output the LPF(n).
Sample Input
1
2
3
4
5
Sample Output
0
1
2
1
3
Author
Wiskey
Source
HDU 2007-11 Programming Contest_WarmUp
C语言AC代码
#include<stdio.h> #include<string.h> int a[1000005]; void getprimers() { memset(a,0,sizeof(a)); a[1]=0; int i,j,s; s=1; for(i=2; i<1000000; i++) { if(a[i]==0) { for(j=i; j<1000000; j=j+i) { a[j]=s; } s++; } } } int main() { { int n; getprimers(); while(scanf("%d",&n)!=EOF) printf("%d\n",a ); } return 0; }
筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。)
先解释一下筛选法的步骤:
<1> 先将1挖掉(因为1不是素数)。
<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3> 用3去除它后面的各数,把3的倍数挖掉。
<4> 分别用5…各数作为除数去除这些数以后的各数。
上述操作需要一个很大的容器去装载所有数的集合,只要满足上述条件,即2的倍数大于1的全部置0,3的倍数大于1的全部置0,4的倍数大于1的全部置。一直到这个数据集合的末尾,这样一来不为0的数就是素数了,然后按下标在里面进行查找就好。
必须附一个神的链接:http://blog.csdn.net/morewindows/article/details/7347459
相关文章推荐
- HDU2136 Largest prime factor 筛选法求素数位置
- 【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
- 【HDU2136】Largest prime factor
- hdu2136 Largest prime factor
- 【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
- HDU2136 Largest prime factor【水题】
- 【HDU2136】 Largest prime factor
- hdu2136 ----Largest prime factor
- HDU2136 Largest prime factor
- HDU2136:Largest prime factor
- 【HDU2136】 Largest prime factor
- HDU2136_Largest prime factor【水题】【筛法求素数】
- [暑假集训--数论]hdu2136 Largest prime factor
- 【HDU2136】 Largest prime factor
- [HDU2136] Largest prime factor(素数筛)
- hdu2136 Largest prime factor
- (hdu step 2.1.3)Largest prime factor(求一个数的最大质因子的位置)
- Largest prime factor
- 【hdoj2136】Largest prime factor
- Largest prime factor(筛选法)