卡普雷卡数
来源:互联网 发布:网络水军 编辑:程序博客网 时间:2024/06/11 11:12
我利用卡普雷卡数来说一下对程序的优化,首先说一下什么是卡普雷卡数,举个例子大家应该就明白了,例如四位卡普雷卡数 3025 30+25=55 55*55=3025
像这样把一个4位数分成前后两个两位,并且满足上述等式的数称为卡普雷卡数。
那么,你能写出一个程序算出所有4位的卡普雷卡数吗?
当然这个问题大家都知道遍历,从1000到9999,进行判断可是这样的程序写的真的是好的程序吗?
# include<stdio.h>
int main()
{
int i;
int a,b,c;
for(i=1000;i<10000;i++)
{
a=i/100;
b=i%100;
c=a+b;
if(c*c==i&&a>=10&&b>=10)
printf("%d\n",i);
}
}
其实写这个程序的时候我们会想到的变量有4位数a还有x+y得到的两位数c,我们时不时可以遍历两位数c呢?
如果这样的话是不是可以把程序优化很多呢?
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,x,y;//b为b*b为4位数的所有两位数
c=sqrt(1000);
for(b=c+1;b<=99;b++)
{
a=b*b;
x=a/100;
y=a%100;
if(x+y==b&&y>=10)
printf("%d\n",a);
}
return 0;
}
0 0