期末上机考试SDUT

喵帕斯之数学难题
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

天才的莲酱期末考试又双叒叕得了满分!不过最近他遇到了一个数学难题,无助的莲酱只好求助于聪明的你啦。

我们定义这样的数为 ”喵帕斯数“ ,假设一个数,他的各位数的平方之和如果是素数的话,那么这个数叫做喵帕斯数。

现在输入一个正整数,请判断这个数是不是一个喵帕斯数,如果是输出 ”YES“,否则 ”NO“。

Input
多组输入直到EOF。(组数小于100)

每组数据输入一行包含一个整数 N (1 <= N <= 10^6)

Output
对每组数据输出 ”YES“ 或者 “NO”。(不包括引号)

Sample Input
11
375
46217
Sample Output
YES
YES
NO
Hint
1不是素数

第一个样例:11 + 11 = 2,是素数。

第二个样例:33 + 77 + 5*5 = 83,是素数。

Source
【2017级《程序设计基础(B)I》期末上机考试】Fish
解题思路:定义函数再求解,注意判断1不是素数

#include <stdio.h>
#include <string.h>
#include <math.h>
int f(int n)
{
    int i;
    int s1=0;
        while(n)
        {

            {
                s1+=(n%10)*(n%10);
                n/=10;
            }

        }
    for(i=2; i<=sqrt(s1); i++)
    {
        if(s1%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==1)
            printf("NO\n");
        else  if(f(n)==1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

发布了25 篇原创文章 · 获赞 0 · 访问量 412

猜你喜欢

转载自blog.csdn.net/weixin_45726784/article/details/103660407
今日推荐