首页 > 试题广场 >

输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各

[问答题]

输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1^3+5^3+3^3

推荐

#include<stdioh>

int main( )

{

int i,j,k,n;

printf("parcissus numbers are");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d",n);

}

printf("\n);

return 0;

}


发表于 2018-03-25 10:56:47 回复(0)
#include <stdio.h>

int main() {
//    输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
//    例如,153是一水仙花数,因为153=1^3+5^3+3^3
    int n;
    printf("请输入你想知道水仙花数的位数,n>=3\n");
    scanf("%d",&n);
    //先知道求水仙花的范围
    int range = 1;
    int i = 1;
    while(i<n){
        range*=10;
        i++;
    }
    //printf("%d\n",range);
    //遍历range到range*10中的所有数字
    i=range;
    while(i<range*10){
        //用一个空盒子来装每次遍历的数字
        int t = i;
        int sum = 0;
        while(t>0){
            int d = t % 10;
            t /= 10;
            //用一个空盒子来装d的数字
            int p = d;
            //计算每个位上的数字的N次幂之和
            for(int j = 1;j<n;j++){
                p *= d;
            }
            sum += p;
        }
        if(sum == i){
            printf("%d位的水仙花数有:%d\n",n,i);
        }
        i++;
    }
    return 0;
}

发表于 2022-09-23 11:40:38 回复(0)
#include<stdio.h>
#include<math.h>
int main(){
	int d1,d2,d3;
	printf("水仙花数有:"); 
	for(int i=1;i<=999;i++){
		d3=i/100;		//百位数字 
		d2=(i%100)/10;	//十位数字 
		d1=(i%100)%10;	//个位数字 
		if(pow(d1,3)+pow(d2,3)+pow(d3,3)==i)
			printf("%d  ",i);
	}
	return 0;
}

发表于 2021-01-16 11:39:30 回复(0)
#include <stdio.h>
int power(int n, int x){
 int k = 1;
 for(int i = 0; i < x; i ++){
  k *= n;
 }
 return k;
}
int isFlower(int n){
 int store = n;
 int cnt = 0;
 while(store != 0){
  cnt += power(store % 10,3);
  store /= 10;
 }
 if(cnt == n)
  return 1;
 else
  return 0;
}
int main(){
 int n = 100;
 for(; n < 1000; n ++){
  if(isFlower(n))
   printf("%d ", n);
 }
 printf("\n");
}
发表于 2019-12-22 18:09:04 回复(0)
#include<stdio.h>

int main()
{
	int i,j,k,n;
	for(n=100;n<1000;n++)
	{
		i=n/100;
		j=n/10%10;
		k=n%10;
	int sum;
	sum=i*i*i+j*j*j+k*k*k;
	if(sum==n)
		printf("%4d\n",n);
	}
}

发表于 2019-12-09 21:06:40 回复(0)
#include<iostream>
#include<string>
using namespace std;
int Cube(int a){
     static int cube = 0;
     int remainder = a % 10;
     cube = cube + remainder* remainder* remainder ;
      if(a / 10 > 0){
          Cube(a / 10);
      } else {
      return cube;
     }
    
}
int main() {
    int a;
    //cout<<"不是水仙花数";
    cin>>a;

    if((a>=100)&&(a<1000)){
        if(Cube(a) == a)  cout<<"是水仙花数";
        else  cout<<Cube(a)<<"不是水仙花数";
    
       else 
       {cout<<"不是水仙花数";}
    return 0;
}
发表于 2019-09-28 20:51:56 回复(0)