编写求五位数的五角星数

1.编写求5位数的五角星数 ( 如果一个五位数等
于它的每一位数字的5次方之和)。6位数的六
合数的代码(如果一个六位数等于它的每一位数
字的6次方之和)。五角星数和六合数是自幂数
的一种。

for循环就好了啊。

#include <stdio.h>
#include <math.h>
int main()
{
    int t,sum=0;
    int i=10000;
    for(;i<100000;i++)
    {  
        t = i;
        sum = 0;
        while(t>0)
        {
             sum += pow(t%10,5.0);
             t = t/10;
        }
        if(sum == i)
            printf("%d\n",sum);
    }
}

img

include<stdio.h>
int main()
{
int n,x,y,z,m,k,t;
while(scanf("%d",&n)!=EOF)
{
x=n%10;
t=n/10;
y=t%10;
t=t/10;
z=t%10;
t=t/10;
m=t%10;
k=t/10;
if(xxxxx+yyyyy+zzzzz+mmmmm+kkkkk==n)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

五角星数:

img

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//五角星数
int main()
{
    int a, b, c, d, e; //记录数字的每个位上数
    int t;
    for (int i = 10000; i <= 99999; i++)
    {
        a = i % 10; //个位数
        t = (i - a) / 10;
        b = t % 10;//百位数
        t = (t - b) / 10;
        c = t % 10; //千位数
        t = (t - c) / 10;
        d = t % 10;//万位数字
        e = i / 10000; //十万位数字

        //printf("num: %d %d %d %d %d\n", a, b, c, d, e);

        if (i == pow(a, 5) + pow(b, 5) + pow(c, 5) + pow(d, 5) + pow(e, 5))
            printf("%d ", i);
    }
    return 0;
}

六合数:

img

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//六合数
int main()
{
    int a, b, c, d, e,f; //记录数字的每个位上数
    int t;
    for (int i = 100000; i <= 999999; i++)
    {
        a = i % 10; //个位数
        t = (i - a) / 10;
        b = t % 10;//百位数
        t = (t - b) / 10;
        c = t % 10; //千位数
        t = (t - c) / 10;
        d = t % 10;//万位数字
        t = (t - d) / 10;
        e = t % 10;//十万位数字
        f = i / 100000; //百万位数字

        

        if (i == pow(a, 6) + pow(b, 6) + pow(c, 6) + pow(d, 6) + pow(e, 6)+pow(f,6))
            printf("%d ", i);
    }
    return 0;
}



```c
#include<stdio.h>
#include<math.h>
int main()
{
    int i = 0;
    int k = 0;//表示位数
    printf("输入位数:>");
    scanf("%d", &k);
    //pow(i,j)意思是求i的j次方,并把这个值返回
    //k-1 是因为 10已经算了一个0了
    for (i = pow(10,k-1); i < pow(10, k); i++)
    {
        int sum = 0;
        //每次进入循环都需要重新求和,所以要写在循环内部
        int j = i;
        //因为while循环中要对这个数进行改变,所以要定义新的变量j
        //如果你直接用i的话那就会出错。
        while (j)
        {
            sum += pow(j % 10, k);
            j = j / 10;
        }
        if (sum == i)
        {
            printf("%d ", sum);
        }
    }
    return 0;
}

```

你可以求任意位数的自幂数

img

img

img

五角星数

#include <math.h>
#include <stdio.h>

int main() {
  for (int i = 10000; i < 100000; i++) {
    int x = i;
    int sum = 0;
    while (x > 0) {
      sum += pow(x % 10, 5);
      x /= 10;
    }
    if (sum == i)
      printf("%d\n", i);
  }
  return 0;
}
$ gcc -Wall main.c -lm
$ ./a.out
54748
92727
93084

六合数

#include <math.h>
#include <stdio.h>

int main() {
  for (int i = 100000; i < 1000000; i++) {
    int x = i;
    int sum = 0;
    while (x > 0) {
      sum += pow(x % 10, 6);
      x /= 10;
    }
    if (sum == i)
      printf("%d\n", i);
  }
  return 0;
}
$ gcc -Wall main.c -lm
$ ./a.out
548834

从水仙花数,一直算到7位叫什么数,供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    int N, i, p, t, sum, n, m, k;
    printf("input num(3<= N <=7):");
    scanf("%d", &N);
    p = pow(10, N);
    for (i = pow(10, N - 1); i < p; i++) {
        for (sum = 0, t = i; t > 0; t /= 10) {
            m = N; k = 1;
            n = t % 10;
            while (m--)k *= n;
            sum += k;
        }
        if (sum == i)
            printf("%d\n", i);
    }
    return 0;
}

#include<stdio.h>
int main()
{
int n,x,y,z,m,k,t;
while(scanf("%d",&n)!=EOF)
{
x=n%10;
t=n/10;
y=t%10;
t=t/10;
z=t%10;
t=t/10;
m=t%10;
k=t/10;
if(xxxxx+yyyyy+zzzzz+mmmmm+kkkkk==n)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

解答如下,有帮助请采纳,有问题请回复

img

#include <stdio.h>
#include <math.h>
int isPOW(int n,int p) 
{
    double sum=0;
    int num=n;
    while(num)
    {
        int tem=num%10;
        num/=10;
        sum+=pow(tem,p);
    }
    if((int)sum==n) return 1;
    else return 0;
}
void cal(int p)
{
    for(int i=(int)pow(10,p-1);i<(int)pow(10,p);i++)
        if(isPOW(i,p)) 
            printf("%d\n",i);
}
int main()
{
    printf("5位数的五角星数:\n");
    cal(5);
    printf("\n6位数的六合数:\n");
    cal(6);
    return 0;
}

代码如下,直接运行即可


#include <stdio.h>
#include <math.h>
int main()
{
    int t,sum=0;
    for(int i=10000;i<100000;i++)
    {  
        t = i;
        sum = 0;
        while(t>0)
        {
             sum += pow(t%10,5.0);
             t = t/10;
        }
        if(sum == i)
            printf("%d\n",sum);
    }
}
 
#include<stdio.h>
int main()
{
    int n,x,y,z,m,k,t;
    while(scanf("%d",&n)!=EOF)
    {
        x=n%10;
        t=n/10;
        y=t%10;
        t=t/10;
        z=t%10;
        t=t/10;
        m=t%10;
        k=t/10;
        if(x*x*x*x*x+y*y*y*y*y+z*z*z*z*z+m*m*m*m*m+k*k*k*k*k==n)
        printf("Yes\n");
        else
        printf("No\n");
    }
    return 0;
}