完美的素数
2017-11-17 16:51
127 查看
Problem Description
Input
输入包含多组测试数据。
每组测试数据只包含一个正整数 n (1 < n <= 10^6)。
Output
对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。
Example Input
11
13
Example Output
YES
NO
1不是素数,2是素数。
素数的定义:大于1,除了1和本身之外无其他因子
素数又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。我们定义:如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。现在给你一个正整数,你需要写个程序判断一下这个数按照上面的定义是不是一个完美的素数。
Input
输入包含多组测试数据。
每组测试数据只包含一个正整数 n (1 < n <= 10^6)。
Output
对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。
Example Input
11
13
Example Output
YES
NO
1不是素数,2是素数。
素数的定义:大于1,除了1和本身之外无其他因子
#include <iostream> using namespace std; int main() { int n,sum; int i,flag; while(cin>>n) { flag=1; 4000 sum=0; if(n==1)//1不是素数 cout<<"NO"<<endl; else { for(i=2; i<n-1; i++) { if(n%i==0) { flag=0; break; } } if(flag==1) { while(n!=0)//不知道位数,取各位用while { sum+=n%10; n=n/10; } if(sum==1) { flag=0; } for(i=2; i<sum-1; i++) { if(sum%i==0) { flag=0; break; } } } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } return 0; }