喵帕斯之数学难题
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;
}