Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include<stdlib.h>
- #define MAX_PRIME 2000000000 /*最大要找到的質數*/
- #define MAX_PRIME_SQUARE 44722 /*大於等於sqrt(MAX_PRIME)的最小整數*/
- #define MAX_PRIME_NUM 100000 /*找到的質數數目*/
- int p[MAX_PRIME]; /*篩選用*/
- int prime[MAX_PRIME_NUM], prime_num; /*質數表*/
- void generate_prime(){
- int i, j, k;
- /*加入2 唯一的偶數質數*/
- prime[0] = 2;
- prime_num = 1;
- /*開始篩選*/
- for(i=3; i<MAX_PRIME_SQUARE; i+=2){
- if(p[i] == 1) /*若非質數 則不處理*/
- continue;
- k = 2*i;
- for(j=i*i; j<MAX_PRIME; j+=k){
- p[j] = 1;
- }
- }
- /*將沒有被篩選掉的質數 存入table*/
- for(i=3; i<MAX_PRIME; i+=2){
- if(p[i] == 0)
- prime[prime_num++] = i;
- }
- }
- int main(){
- int i;
- generate_prime();
- int a,b;
- int x;
- while(scanf("%d",&a)==1)
- {
- for(i=0;i<=a;i++)
- {
- if(a%prime[i]==0)
- {
- x=prime[i];
- }
- if(prime[i]>a)
- {
- break;
- }
- }
- printf("%d\n",x);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement