卡普雷卡数

来源:互联网 发布:网络水军 编辑:程序博客网 时间: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
原创粉丝点击