|
本帖最后由 gloomyakon 于 2013-2-28 14:16 编辑
计算起来还蛮费劲儿的,所以只等它算出个部分结果。不知道有没有更快的计算方法,求教。- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- /*
- 1.12位以下的雷劈数,则超出int的表示范围了。使用long long才行
- 2.如果是雷劈数则(a+b)^2=a*[log10(b)]+b,其中[]是向上取整。
- 3.但是C语言里的log10等函数没有针对long long类型的所以要强制转换。*/
- int main()
- {
- long long sum;
- long long product;
- long long a,b;
- for (a=1;a<999999999999;a++)
- {
- for(b=0;b<999999999999;b++)
- {
- product = (a+b)*(a+b);
- if(log10((long double)product)>12)
- break;
- sum=a*pow(10,floor(log10((long double)b)+1))+b;
- if(product==sum)
- printf("a=%lld,b=%lld,\t%lld\n",a,b,product);
- }
- }
- system("pause");
- return 0;
- }
复制代码 |
|