Advertisement
rrick

Untitled

Feb 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #define MAX_PRIME 2000000000 /*最大要找到的質數*/
  4. #define MAX_PRIME_SQUARE 44722 /*大於等於sqrt(MAX_PRIME)的最小整數*/
  5. #define MAX_PRIME_NUM 100000 /*找到的質數數目*/
  6. int p[MAX_PRIME]; /*篩選用*/
  7. int prime[MAX_PRIME_NUM], prime_num; /*質數表*/
  8.  
  9. void generate_prime(){
  10. int i, j, k;
  11.  
  12. /*加入2 唯一的偶數質數*/
  13. prime[0] = 2;
  14. prime_num = 1;
  15.  
  16. /*開始篩選*/
  17. for(i=3; i<MAX_PRIME_SQUARE; i+=2){
  18. if(p[i] == 1) /*若非質數 則不處理*/
  19. continue;
  20. k = 2*i;
  21. for(j=i*i; j<MAX_PRIME; j+=k){
  22. p[j] = 1;
  23. }
  24. }
  25.  
  26. /*將沒有被篩選掉的質數 存入table*/
  27. for(i=3; i<MAX_PRIME; i+=2){
  28. if(p[i] == 0)
  29. prime[prime_num++] = i;
  30. }
  31. }
  32.  
  33. int main(){
  34. int i;
  35.  
  36. generate_prime();
  37. int a,b;
  38. int x;
  39. while(scanf("%d",&a)==1)
  40. {
  41.  
  42. for(i=0;i<=a;i++)
  43. {
  44. if(a%prime[i]==0)
  45. {
  46. x=prime[i];
  47. }
  48. if(prime[i]>a)
  49. {
  50. break;
  51. }
  52. }
  53. printf("%d\n",x);
  54. }
  55.  
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement