提高篇第2-5課第六題

第一小題:

#include <stdio.h>
#include <stdlib.h>
//第六題,第一小題,求反序數
int reverse(int);
int main()
{
    int m,n;
    scanf("%d", &m);
    n=reverse(m);
    printf("%d\n", n);
    return 0;
}
int reverse(int x)   //函數只管求值,不管輸出。輸出由main函數完成
{
     int y=0;
     while(x!=0)
     {
         y=x%10+y*10;
         x=x/10;
     }
     return y;
}

第二小題:

#include <stdio.h>
#include <stdlib.h>
//第六題,第二小題,判斷迴文數
int reverse(int);
int isPalindrome(int);
int main()
{
    int m;
    scanf("%d", &m);
    if(isPalindrome(m))
        printf("%d是迴文數,噢耶!\n", m);
    else
        printf("%d不是迴文數。迴文有什麼好!\n", m);
    return 0;
}
int reverse(int x)   //函數只管求值,不管輸出。輸出由main函數完成
{
     int y=0;
     while(x!=0)
     {
         y=x%10+y*10;
         x=x/10;
     }
     return y;
}
int isPalindrome(int n)  //在這個函數中只管判斷,不能出現printf語句!
{
    int m;
    int r;
    m=reverse(n);
    if(m==n)
        r=1;
    else
        r=0;
    return r;
}

第三題:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第六題,第三小題,判斷素數
//int reverse(int);
//int isPalindrome(int);
int isPrimer(int);
int main()
{
    int num;
    scanf("%d",&num);
    if(isPrimer(num))
        printf("%d是素數",num);
    else
        printf("%d不是素數",num);
    return 0;
}

int isPrimer(int n)  //在這個函數中只管判斷,不能出現printf語句!
{
    int i;
    int r=1;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            r=0;
            break;
        }
    }
    return r;
}
第四題:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第六題,第四小題
int reverse(int);
int isPalindrome(int);
int isPrimer(int);
int main()
{
    int num,num_anti;
    printf("1000以內的素數如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPrimer(num))
        {
            printf("%d ",num);
        }
    }
    printf("\n");
    printf("1000以內的迴文數如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPalindrome(num))
        {
           printf("%d ",num);
        }
    }
    printf("\n");
    printf("1000以內的迴文素數如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPrimer(num)&&isPalindrome(num))
        {
            printf("%d ",num);
        }
    }
    printf("\n");
    printf("10000以內的可逆素數如下:\n");
    for(num=1;num<=10000;num++)
    {
        num_anti=reverse(num);
        if(isPrimer(num)&&isPrimer(num_anti))
           printf("%d ",num);
    }
    return 0;
}

int isPrimer(int n)  //在這個函數中只管判斷,不能出現printf語句!
{
    int i;
    int r=1;
    if(n==1)
        r=1;
    else
    {
        for(i=2;i<=sqrt(n);i++)
        {
            if(n%i==0)
            {
                r=0;
                break;
            }
        }
    }
        return r;
}
int reverse(int x)   //函數只管求值,不管輸出。輸出由main函數完成
{
     int y=0;
     while(x!=0)
     {
         y=x%10+y*10;
         x=x/10;
     }
     return y;
}
int isPalindrome(int n)  //在這個函數中只管判斷,不能出現printf語句!
{
    int m;
    int r;
    m=reverse(n);
    if(m==n)
        r=1;
    else
        r=0;
    return r;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章