我怎么能不努力奋斗

导航

 

Your task is simple:
Find the first two primes above 1 million, whose separate digit sums are also prime.
As example take 23, which is a prime whose digit sum, 5, is also prime.
The solution is the concatination of the two numbers,
Example: If the first number is 1,234,567
and the second is 8,765,432,
your solution is 12345678765432

 

你的任务是简单的:

找到第一个和第二个大于1百万,并且每个位上的数字的和都是素数的素数。

举例说明,素数23每个位上的数字之和为5,5同样也是个素数。

提交的答案是这两个数字联在一起的。

举例:如果第一个数字是 1234567

第二个数字是 8765432

你提交的答案应该是 12345678765432

 

#include <stdio.h>
#include <math.h>

//判断整数x是否为素数
int isPrime( int x )
{
    int flag=1;
    if(x==1)
        flag=0;
    for(int i=2;i<= sqrt(x);i++)
    {
        if(x % i==0)
        {
            flag=0;
            break;
        }
    }
    return flag;
}

//返回参数x,每个数位上的数字之和
int digitSum( int x )
{
    int sum=0;
    while(x)
    {
        sum += x % 10;
        x /= 10;
    }
    return sum;
}

int main( void )
{
    int n=0;
    int i=1000000;
    while(n<2)
    {
        if( isPrime(i) && isPrime(digitSum(i)))
        {
            printf("%d",i);
            n++;
        }
        i++;
    }
}

 

posted on 2016-01-01 23:23  我怎么能不努力奋斗  阅读(403)  评论(0编辑  收藏  举报