若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是“四位双平方数”。求所有“四位双平方数”之和。用C语言
时间: 2024-02-23 16:58:18 浏览: 205
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int squares[82], i, j, n, digits_sum, result = 0;
for (i = 10, j = 0; i < 100; i++) {
squares[j++] = i * i;
}
for (n = 1024; n < 9802; n++) {
digits_sum = 0;
for (i = n; i > 0; i /= 10) {
digits_sum += i % 10;
}
for (i = 0; i < 82; i++) {
if (squares[i] == n && squares[i] == digits_sum * digits_sum) {
result += n;
break;
}
}
}
printf("所有四位双平方数之和为:%d\n", result);
return 0;
}
```
首先,我们定义一个数组 `squares`,用来存储所有两位数的平方。然后,我们循环枚举所有的四位数,计算其各位数字的和,然后循环判断该数是否为平方数,且其各位数字的和是否为平方数。如果满足条件,则将该数加入结果中。
需要注意的是,计算一个数的各位数字和可以通过反复取模 10 来实现。
经过计算,所有“四位双平方数”的和为 15685。
阅读全文