水仙花数(daffodil)及相关内容
水仙花数相关定义:
水仙花数是自幂数的一种,与其类似的有:独身数,四叶玫瑰数,五角星数,六合数,北斗七星数,八仙数,九九重阳数,十全十美数。
自幂数:指一个n位数,它的每一位上的数字的n次幂之和等于它本身。
独身数:1位数的1次方都等于其本身,所以1~9都是独身数
水仙花数:一个三位数,它的每位上的数字的3次幂之和等于它本身。例如:1^3 +5^3 +3^3=153.
四叶玫瑰数:一个四位数,它的每位上的数字的4次幂之和等于它本身。
…
十全十美数:一个十位数,它的每位上的数字的10次幂之和等于它本身。
习题
输入m,n(100<m<n<1000),输出m~n之间的所有水仙花数。若3位数ABC满足ABC=A^3 +B^3 +C^3,则称其为水仙花数。例如 1^3 +5^3 +3^3=153.,所以153是水仙花数。
解题
重点在于利用 " / “,” %"运算符,分离出每位上的数值,然后判断。
C语言:
#include<stdio.h>
int main(){
int m,n,i,a,b,c;
scanf("%d %d",&m,&n);
if(m>n||m<100||n>999){
printf("输入数据有误,请重新输入:");
scanf("%d %d",&m,&n);}
for(i=m;i<n;i++){
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
return 0;
}
Java:
import java.util.Scanner;
public class daffodil {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("输入m,n的值:");
int m,n,i,x,y,z;
m=sc.nextInt();
n=sc.nextInt();
if(m>n||m<100|n>1000) {
System.out.print("输入数据有误,请重新输入m,n的值:");
m=sc.nextInt();
n=sc.nextInt();
}
for(i=m;i<n;i++) {
x=i/100;
y=i/10%10;
z=i%10;
if(i==x*x*x+y*y*y+z*z*z) {
System.out.println(i);
}
}
}
}