提高篇第一講專案6.4——編制函式輸出1000以內的所有素數,迴文數,迴文素數,可逆素數
阿新 • • 發佈:2019-01-09
問題描述
(4)編制main函式,呼叫上面定義的3個函式,完成
- 輸出1000以內的所有素數。
- 輸出1000以內的所有迴文數。
- 輸出1000以內的所有迴文素數。
- 若一個素數的反序數仍為素數,則稱它為可逆素數。求10000以內的所有可逆素數。
程式程式碼
#include <stdio.h> #include <math.h> #define num 1000 /* *csdn學院--2016級 *目的:讓程式碼見證成長(作為一個初學的菜鳥,如 *大家有發現錯誤,歡迎指正!) *檔名稱:Myfun118.c *作者:小臣小仁 *完成日期:2017年3月8日 */ int isPalindrome(int);//迴文數 int isPrimer(int);//素數 int reverse(int);//可逆素數 int main() { int i; printf("%d內的迴文數如下:\n",num); for(i=2;i<=num;i++) { if(isPalindrome(i)) printf("%d\t",i); } printf("\n"); printf("%d內的素數如下:\n",num); for(i=2;i<num;i++) { if(isPrimer(i)) printf("%d\t",i); } printf("\n"); printf("%d內的迴文素數為:\n",num); for(i=2;i<=num;i++) { if(isPrimer(i)&&isPalindrome(i)) printf("%d\t",i); } printf("\n"); printf("%d內以內的可逆素數如下:\n",num*10); for(i=2;i<=num*10;i++) { if(isPrimer(reverse(i))&&isPrimer(i)) printf("%d\t",i); } return 0; } int reverse(int num3) { int sum=0; while(num3>0) { sum=sum*10+num3%10; num3=num3/10; } return(sum); } int isPalindrome(int num1) { int Palindrome=0; if(reverse(num1)==num1) Palindrome=1; return(Palindrome); } int isPrimer(int num2) { int i,j; int Primer=1; j=(int)(sqrt(num2)); for(i=2;i<j;i++) { if(num2%i==0) { Primer=0; break; } } return (Primer); }
知識點總結
通過編寫回文數函式,素數函式,可逆素數函式,在函式裡面呼叫依次實現。
心得體會
作為一個大二菜鳥,慢慢了解了C語言了,雖然後面的路還很長,但還是蠻高興的