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);
}
}
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;
}
五角星数:
#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;
}
六合数:
#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;
}
```
你可以求任意位数的自幂数
五角星数
#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;
}
解答如下,有帮助请采纳,有问题请回复
#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;
}