求a[上界]到b[下界]之间同构数的个数

#include "stdio.h"
#include "math.h"



int check(int i);
int geting(int j);
int puting(int k);



void main()//主函数,求a[上界]到b[下界]之间同构数的个数,及所有同构数之和!
{
printf("现在我们开始算吧!\n");
int i,k,num,a,b;
long sum;
num=0;
sum=0;
printf("请输入你要搜索范围的上界a和下界b!\n");
printf("a:\t");
scanf("%d",&a);
printf("b:\t");
    scanf("%d",&b);
for(i=a;i<=b;i++)
{
  k=check(i);
  if(k==1)
  {
   printf("%d\n",i);
   num++;
   sum=sum+i;
  }
}
printf("2到100之间有:\t %d 个完数!\n",num);
printf("所有完数的和为:\t %d \n",sum);
void getch();
}



int check(int i)//测试一个数是否为同构数
{
int j,k,l,n,m,pp;
j=0;
n=0;
l=i*i;
k=geting(i);
while(k>0)
{
  pp=l%10;
  m=puting(n);
  j=j+pp*m;
  n++;
  k--;
  l=int(l/10);
}
if(j==i)
{
  return 1;
}
else
{
  return 0;
}
}



int geting(int j)//测试一个数为多个位
{
int i;
i=0;
while(j>=1)
{
  j=j/10;
  i++;
}
return i;
}



int puting(int k)//计算10的k次方,加一参数可以求x的y次方
                 //也可以用 double pow(double   x,double   y); 这样的一个函数!
     //不过要加入一个头文件,我以加了。就是#include "math.h"
{
int sum;
int i;
sum=1;
for(i=0;i<k;i++)
{
  sum=sum*10;
}
return sum;
}



评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.