搜索
查看: 5201|回复: 17
打印 上一主题 下一主题

C语言一天一练--22.august

[复制链接]
楼主
发表于 2013-2-28 14:04:34 | 显示全部楼层
本帖最后由 gloomyakon 于 2013-2-28 14:16 编辑

计算起来还蛮费劲儿的,所以只等它算出个部分结果。不知道有没有更快的计算方法,求教。
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. /*
  5. 1.12位以下的雷劈数,则超出int的表示范围了。使用long long才行
  6. 2.如果是雷劈数则(a+b)^2=a*[log10(b)]+b,其中[]是向上取整。
  7. 3.但是C语言里的log10等函数没有针对long long类型的所以要强制转换。*/
  8. int main()
  9. {

  10.         long long sum;
  11.         long long product;
  12.         long long a,b;
  13.         for (a=1;a<999999999999;a++)
  14.         {
  15.                 for(b=0;b<999999999999;b++)
  16.                 {
  17.                         product = (a+b)*(a+b);
  18.                         if(log10((long double)product)>12)
  19.                                 break;
  20.                         sum=a*pow(10,floor(log10((long double)b)+1))+b;
  21.                         if(product==sum)
  22.                                 printf("a=%lld,b=%lld,\t%lld\n",a,b,product);
  23.                 }
  24.         }
  25.         system("pause");
  26.         return 0;
  27. }
复制代码

leipi.PNG (16.96 KB, 下载次数: 19)

部分结果

部分结果
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表