1614: 五位以内的对称素数

1614: 五位以内的对称素数

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 464  Solved: 241
[Submit][Status][Web Board]

Description

判断一个数是否为对称且不大于五位数的素数。

Input

输入数据含有不多于50个的正整数(0<n<232)。

Output

对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。

Sample Input

11 101 272

Sample Output

Yes
Yes
No


#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
    if(weishu(n)&&duichen(n)&&prime(n))
        printf("Yes\n");
    else
        printf("No\n");
    }
}
int weishu(int n)
{
    int a[20],i=1;
    while(n!=0)
    {
        a[i]=n%10;
        n=n/10;
        i++;
    }
    if(i<=5)
        return 1;
    else
        return 0;
}
int duichen(int n)
{
    int a[20],i=0,k,j;
    while(n!=0)
    {
        a[i]=n%10;
        n=n/10;
        i++;
    }
    for(j=0,k=i-1;(j<i)&&(j<=k);j++,k--)
        if(a[j]!=a[k])
        return 0;
    else
        return 1;

}
int prime(int n)
{
    int k,i;
    k=sqrt(n);
    for(i=2;i<=k;i++)
        if(n%i==0)
        return 0;
    if(i==k+1)
        return 1;
}

  

原文地址:https://www.cnblogs.com/mjn1/p/8435619.html