求水仙花数C语言实现

所谓水仙花数(NarcissisticNumber)是指一个3位数,其各位数字的立方和等于它本身。
思路:(1)将该数各位数字分解出来,然后求各数字立方和是否等于原数
(2)凑3个数字,组成一个三位数,求各数字立方和是否等于凑成的数 (注意百位数字从1开始)
例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
分析:“水仙花数”是三位数,所以取值范围是 100〜999。

C语言实现:

#include<stdio.h>
#include<math.h>

int main() {
    
    
    int unit, ten, hund;
    for (int i = 100; i < 1000; i++) {
    
    
        unit = i / 100;       //求百位数
        ten = (i / 10) % 10; //求十位数
        hund = i % 10;        //求个位数
        //if (i == hund * hund * hund + ten * ten * ten + unit * unit * unit)
        if (i == pow(hund, 3) + pow(ten, 3) + pow(unit, 3))
            printf("%d\n", i);
    }
}

C++实现:

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    
    
    int n, unit, ten, hund; 
    for (n = 100; n < 1000; n++) {
    
    
        //将各个数位分离,得到个位、十位、百位。(注意百位数字从1开始)
        unit = n % 10;
        ten = (n / 10) % 10;
        hund = n / 100;
        // 判断各位数字的立方和是否等于它本身
        //if (n == hund * hund * hund + ten * ten * ten + unit * unit * unit)
        if (n == pow(hund, 3) + pow(ten, 3) + pow(unit, 3))
            cout << n << endl;
    }
    cout << endl;
    return 0;
}

Java实现:

public class exercise_7 {
    
    
	public static void main(String[] args) {
    
    
	    int unit, ten, hund;
		for (int i = 100; i < 1000; i++) {
    
    
			unit = i / 100;       //求百位数
            ten = (i / 10) % 10; //求十位数
            hund = i % 10;        //求个位数
		   	if (i == hund * hund * hund + ten * ten * ten + unit * unit * unit) {
    
    
				System.out.println(i);
			}
		}
	}
}

Python实现:

for i in range(100,1000):
    sum=0
    temp=i
    while temp:
        sum=sum+(temp%10)**3
        temp//=10
    if sum == i:
        print(i)

猜你喜欢

转载自blog.csdn.net/weixin_52088967/article/details/130117883