1. 程式人生 > >C++程式設計-2553-完美的素數

C++程式設計-2553-完美的素數

Problem Description
素數又稱質數。指一個大於1的自然數,除了1和此整數自身外,不能被其他自然數整除的數。我們定義:如果一個素數是完美的素數,當且僅當它的每一位數字之和也是一個素數。現在給你一個正整數,你需要寫個程式判斷一下這個數按照上面的定義是不是一個完美的素數。

Input
輸入包含多組測試資料。
每組測試資料只包含一個正整數 n (1 < n <= 10^6)。

Output
對於每組測試資料,如果 n 是完美的素數,輸出“YES”,否則輸出“NO”(輸出均不含引號)。
Sample Input
11
13
Sample Output
YES
NO

#include<stdio.h>
int main()
{
	int a1,a2,a3,a4,a5,a6,a7,temp,flag,sum,n,j,i;
	while(scanf("%d",&n)!=EOF)
	{
		flag=1;
		temp=1;
		a1=n%10;
		a2=n/10%10;
		a3=n/100%10;
		a4=n/1000%10;
		a5=n/10000%10;
		a6=n/100000%10;
		a7=n/1000000%10;
		sum=a1+a2+a3+a4+a5+a6;
		for(i=2;i<=n-1;i++)
		if(n%i==0)
		temp++;
		if(flag==1)
		{
		for(j=2;j<=sum-1;j++)
			if(sum%j==0)
			flag++;
		}
		if(temp==1&&flag==1)
		printf("YES\n");
		else 
		printf("NO\n");
	
	}
	return 0;
}

有個更簡單的辦法,
while(n!=0){
sum=n%10;
n=n/10;}
//不知道對不對,有時間可以試一試。