玫瑰花数,比如 1634 等于各个位数的 4 次方,求 1000 到 9999的玫瑰花数。
我只会用死方法目前
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c, d;
for ( a = 1; a < 10; a++)
{
for ( b = 0; b < 10; b++)
{
for ( c = 0; c < 10; c++)
{
for ( d = 0; d < 10; d++)
{
if (pow(a,4)+ pow(b, 4)+ pow(c, 4)+ pow(d, 4) == a * 1000 + b * 100 + c * 10 + d)
{
printf("%d\n",a * 1000 + b * 100 + c * 10 + d);
}
}
}
}
}
}
这个是用ai写的
以下是使用C语言实现的代码:
#include <stdio.h> #include <math.h>
int main() { int result[1000]; // 声明一个数组用于存储结果,最多存储1000个数 int count = 0;
// 计数器,记录符合条件的数的个数
for (int number = 1000; number <= 9999; number++) {
int temp = number;
int sum = 0;
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, 4);
temp /= 10;
}
if (sum == number) {
result[count] = number;
count++;
}
}
// 输出结果
for (int i = 0; i < count; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
在这个代码中,我们使用了一个数组result来存储结果。我们通过一个循环遍历从1000到9999的所有四位数。对于每个数字,我们计算各个位数的四次方的和,并将结果与原数字比较。如果它们相等,就将数字存储到结果数组中,并递增计数器。最后,我们遍历结果数组,并将结果输出到屏幕上。