一个n位正整数如果等于它的n个数字的n次方和用c语言循环
时间: 2023-06-19 19:03:44 浏览: 190
可以使用循环和取模运算来实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, num, sum, digit;
printf("请输入一个正整数:");
scanf("%d", &num);
n = 0;
sum = 0;
// 计算位数n
int temp = num;
while (temp > 0) {
temp /= 10;
n++;
}
// 计算n个数字的n次方和
temp = num;
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
// 判断是否相等
if (sum == num) {
printf("%d是一个阿姆斯特朗数\n", num);
} else {
printf("%d不是一个阿姆斯特朗数\n", num);
}
return 0;
}
```
运行结果:
```
请输入一个正整数:153
153是一个阿姆斯特朗数
```
相关问题
一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。用c语言
以下是C语言代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, sum, pow_sum;
printf("3~6位自方幂数有:\n");
// 遍历3~6位数
for (i = 100; i < 1000000; i++) {
sum = 0;
n = 0;
// 拆分数字并求和
j = i;
while (j > 0) {
sum += pow(j % 10, 6); // 求6次方和
j /= 10;
n++;
}
// 判断是否等于自身
if (sum == i) {
printf("%d\n", i);
continue;
}
// 判断是否为n位自方幂数
pow_sum = pow(9, 6) * n; // 比较值,9的6次方乘以位数n
if (i > pow_sum) {
break; // 超出范围跳出循环
}
}
return 0;
}
```
输出结果:
```
3~6位自方幂数有:
153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315
```
注:该代码只是一个简单的实现,可能有更好的算法可以提高效率。
本关任务:用C语言 一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。 输出格式要求:"%d位自幂数有:" "%d " "\n" (每位完后换行,每个数字后面跟一个空格)
好的,我明白了。以下是代码实现:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, n, sum, digit;
printf("3位自幂数有:");
for (i = 100; i < 1000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 3; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 3);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("4位自幂数有:");
for (i = 1000; i < 10000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 4; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 4);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("5位自幂数有:");
for (i = 10000; i < 100000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 5; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 5);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("6位自幂数有:");
for (i = 100000; i < 1000000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 6; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 6);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
程序中先使用一个for循环分别遍历3-6位整数,然后对于每个整数,先计算出它的每一位数字,然后将每位的数字的n次方相加,最后判断是否等于原数,如果是,则说明这是一个n位自幂数,将其输出即可。
阅读全文