c语言,水仙花
发布网友
发布时间:2022-05-13 21:21
我来回答
共3个回答
热心网友
时间:2023-10-29 14:01
方法:先弄懂什么是水仙花数::
水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环)
再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9那么用10*b或者10*c来表示十位;那么下面用c或者b来表示个位;
if(100*a+10*b+c==a*a*a+b*b+c) 如果满足这个条件那么:输出的printf("%d%d%d",a,b,c)就是3位数的水仙花数:
4位水仙花数方法同上:
刚写的:调试过了
#include <stdio.h>
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d\n",a,b,c,d);
getch();
}
或者这样:
#include <stdio.h>
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d\n",a,b,c,d);
}
getch();
}
热心网友
时间:2023-10-29 14:01
/*
* 水仙花数
*/
#include <stdio.h>
int main()
{
unsigned int i = 0;
unsigned int tmp = 0;
int x = 0;
unsigned int ret = 0;
while (i < 0x7fffffff)
{
ret = 0;
tmp = i;
while (tmp)
{
x = tmp % 10;
ret += x * x * x;
tmp = tmp / 10;
}
if (ret == i)
printf("%d ", i);
++i;
}
//printf("\nup limit:%d\n", i);
}
热心网友
时间:2023-10-29 14:02
#include<stdio.h>
int calc(int num){
int sum=0;
while(num!=0){
sum+=(num%10)*(num%10)*(num%10);
num/=10;
}
return sum;
}
void main(){
int sum=0,i;
for(i=100;i<=999;i++){
if(i==calc(i)){
sum+=i;
printf("%d\n",i);
}
}
printf("水仙花数的和是:%d\n",sum);
}