内存:128  时间:1

题目描述

素数(prime number)又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。我们定义:如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。现在给你一个正整数,你需要写个程序判断一下这个数按照上面的定义是不是一个完美的素数。

输入

输入包含多组测试数据。

每组测试数据只包含一个正整数 n (1 < n <= 10^8)。

输出

对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。

样例输入

11
13

样例输出

YES
NO

提示

代码如下

#include<stdio.h>
int sushu(int p);
int shuhe(int q);
int main()
{
    int n, x, y, z;
    while(scanf("%d", &n)!=EOF)
    {
        x = sushu(n);
        y = shuhe(n);
        z = sushu(y);
        if(x == 1 && z == 1)
            printf("YES
");
        else
            printf("NO
");
    }
    return 0;
}
int sushu(int p)
{
    int i, a = 1;
    for(i = 2; i < p; i++)
    {
        if(p % i == 0)
        {
            a = 0;
            break;
        }
    }
    return a;
}
int shuhe(int q)
{
    int s = 0;
    while(q > 0)
    {
        s = s + q % 10;
        q = q / 10;
    }
    return s;
}

代码来源于互联网,仅供参考!