C语言/C++常见习题问答集锦(七十七)之玫瑰花数
程序之美
玫瑰花数又称“四叶玫瑰数”,是指四位数各位上的数字的四次方之和等于本身的数。
例如:1634就是一个玫瑰花数
1*1*1*1=1
6*6*6*6=1296
3*3*3*3=81
4*4*4*4=256
1+1296+81+256=1634
由上可知玫瑰花数一共有三个:1634,8208,9474
下面我们就用C语言来进行玫瑰花数的求解。
话不多说,先上效果图:
解法一:
#include<stdio.h>
int main()
{
int i, j, t;
for(i=1000; i<10000; i++)
{
t = 0;
for(j=i; j; j/=10)
t += (j%10)*(j%10)*(j%10)*(j%10);
if(t == i)
printf("%d\n", i);
}
}
解法二:
#include <stdio.h>
int main()
{
int i , a , b , c , d;
for(i=1000;i<=9999;i++){
a = i/1000;
b = (i -a*1000)/100;
c = (i%100)/10;
d = (i%100)%10;
if(i==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("玫瑰花数为:%d \n",i);
}
}
运行结果:
解法三:
#include<stdio.h>
void main()
{
int x,r,n;
for(n=1000;n<10000;n++)
{
int s=0;
x=n;
while(x>9)
{
r=x%10;
x=x/10;
s=s+r*r*r*r;
}
s=s+x*x*x*x;
if(n==s)
printf("%d\n",n);
}
}
运行结果:
好了,今天就说这么多了,希望小伙伴们能从这篇文章中学到东西,也真心希望能够帮助正在苦学C语言的小伙伴们,你们的成长是我最大的幸福。很感谢您能够在百忙之中浏览我的文章。