题意:给你一个数 如果是素数就输出0 否则输出大于它的最小质数 和 小于他的最大质数 的差
比如10 大于它的最小质数是11 小于他的最大质数是7 所以输出11-7=4
水题质数表 虽然我的方法傻逼哭)
1 #include <stdio.h> 2 #include <string.h> 3 bool isp [ 10000010 ]; 4 int prime [ 10010 ], size , n , ans , Min = 1299709 , k ; 5 int main () 6 { 7 memset ( isp , 1 , sizeof ( isp )); 8 for ( int i = 2 ; i <= 100000 ; i ++) 9 { 10 if ( isp [ i ]) 11 { 12 prime [++ size ] = i ; 13 for ( int k = 2 ; k <= 1299709 / i ; k ++) 14 isp [ k * i ] = false ; 15 } 16 } 17 k = 0 ; 18 int kk ; 19 while ( scanf ( "%d" ,& n ), n ) 20 { 21 if ( isp [ n ]) 22 { 23 printf ( "0 \n " ); 24 continue ; 25 } 26 for ( k = 1 ;; k ++) 27 { 28 if ( isp [ n - k ]) 29 break ; 30 } 31 for ( kk = 1 ;; kk ++) 32 { 33 if ( isp [ n + kk ]) 34 break ; 35 } 36 printf ( "%d \n " , kk + k ); 37 } 38 return 0 ; 39 }
时间: 2024-10-10 21:26:01