。
main( , & ( n -- > , & , get_nearest( x ) );
prime_list * get_nearest( step = ; sign = -; Node * head = NULL ; ( ! be_prime( x , &+= ( sign = - sign ) * ++
be_prime( x , Node * * pp ) ( x <= ( x == ( get_remainder( x , pp ) == )
get_remainder( x , Node * * pp ) ( * pp == NULL || sqr_less( (*pp) -> prime , x ) ) add_1_prime ( pp ) ; * p = * ( p != ( x % p -> prime == = p -> ! sqr_less ( n , n * n <
add_1_prime ( pp ) ;
sqr_less( (*pp) -> prime , x )
add_1_prime( Node * * ( * pp == , pp ); next_p = ( * pp )->prime + ; ( !++ }
be_prime( next_p , pp )
be_prime( x , & head )
add_1_prime ( pp ) ;
be_prime( next_p , pp )
9這個量級),兩套代碼的速度有天壤之別。
get_nearest( step = ; sign = -; Node * head = NULL ; ( 建立最大素數平方不小於x的素數表() , ! be_prime( x , &+= ( sign = - sign ) * ++
add_1_prime( Node * * ( * pp == , pp ); ( ( * pp ) -> : add ( : add ( next_p = ( * pp )->prime + ; ( !++
問題:
素數
在世博園某信息通信館中,游客可利用手機等終端參與互動小游戲,與虛擬人物Kr. Kong 進行猜數比賽。
當屏幕出現一個整數X時,若你能比Kr. Kong更快的發出最接近它的素數答案,你將會獲得一個意想不到的禮物。
若X本身是素數,則回答X;若最接近X的素數有兩個時,則回答大於它的素數。
接下來有N行,每行有一個正整數X
輸出:輸出有N行,每行是對應X的最接近它的素數
4
22
5
18
8
輸出
23
5
19
7
出處:http://www.cnblogs.com/pmer/ “C語言初學者代碼中的常見錯誤與瑕疵”系列博文
*/
#include <stdio.h><stdbool.h> prime_list * get_nearest( be_prime( , Node * * get_remainder( , Node * * add_1_prime( Node * * sqr_less ( , add ( , Node * * my_malloc( Node * * my_free( Node * main( , & ( n -- > , & , get_nearest( x ) ); get_nearest( step = ; sign = -; Node * head = NULL ; ( ! be_prime( x , &+= ( sign = - sign ) * ++ be_prime( x , Node * * pp ) ( x <= ( x == ( get_remainder( x , pp ) == ) get_remainder( x , Node * * pp ) ( * pp == NULL || sqr_less( (*pp) -> prime , x ) ) add_1_prime ( pp ) ; * p = * ( p != ( x % p -> prime == = p -> ! sqr_less ( n , n * n < add_1_prime( Node * * ( * pp == , pp ); ( ( * pp ) -> : add ( : add ( next_p = ( * pp )->prime + ; ( !++ add ( prime , Node * **&-> prime =-> next = ** pp = my_malloc( Node * * ( ( * p_p = malloc( (* * p_p) ) ) == my_free( Node ** ( ( temp = p ) !== p->
偶然發現Jingle Guo網友後來研究同一問題的一篇博文,我感覺對閱讀此文的網友可能有一定的參考價值,故在此給出相關鏈接:。