1. 程式人生 > >提高篇第一講專案6.4——編制函式輸出1000以內的所有素數,迴文數,迴文素數,可逆素數

提高篇第一講專案6.4——編制函式輸出1000以內的所有素數,迴文數,迴文素數,可逆素數

問題描述

(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語言了,雖然後面的路還很長,但還是蠻高興的大笑