C语言简单算法-看来的,小弟我是搞不定啊
C语言简单算法--看来的,我是搞不定啊。。。
题目详情
如果一个数各个数位上的数字之和是质数,并且各个数位上的数字的平方和也是质数,则称它为幸运数。
给定x,y,求x,y之间( 包含x,y,即闭区间[x,y])有多少个幸运数。
例如1到20之间有4个幸运数,它们是11,12,14,16,像因为1+1 = 2是质数,1^2 + 1^2 = 2也是质数等等。
给定函数原型,其中1<=x<=y<=1000000000,请完成函数,实现上述功能。
答题说明
运行时间限时3秒。
------解决方案--------------------
题目详情
如果一个数各个数位上的数字之和是质数,并且各个数位上的数字的平方和也是质数,则称它为幸运数。
给定x,y,求x,y之间( 包含x,y,即闭区间[x,y])有多少个幸运数。
例如1到20之间有4个幸运数,它们是11,12,14,16,像因为1+1 = 2是质数,1^2 + 1^2 = 2也是质数等等。
给定函数原型,其中1<=x<=y<=1000000000,请完成函数,实现上述功能。
答题说明
运行时间限时3秒。
算法
C
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int CheckIsP(int aNum)
{
if (aNum == 2)
{
return 1;
}
if (aNum == 1)
{
return 0;
}
int i;
for (i=2;i<aNum;i++)
{
if ((aNum % i) == 0)
{
return 0;
}
if (i >= (aNum / 2))
{
break;
}
}
return 1;
}
int CheckNUM(int aNum)
{
int NumDigCount;
char pNum[20];
itoa(aNum,pNum,10);
NumDigCount = strlen(pNum);
int i,tmpDig;
int DigSum=0;
int DigSqSum=0;
for (i=0;i<NumDigCount;i++)
{
tmpDig = pNum[i] - '0';
DigSum += tmpDig;