1. 程式人生 > >水仙花數的解法

水仙花數的解法

水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。例如:1。 本題要求編寫程式,計算所有N位水仙花數。

輸入格式:
輸入在一行中給出一個正整數N(3)。

輸出格式:
按遞增順序輸出所有N位水仙花數,每個數字佔一行。

輸入樣例:
3
輸出樣例:
153
370
371
407
一位自冪數:獨身數
兩位自冪數:沒有
三位自冪數:水仙花數
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
七位自冪數:北斗七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數

我的程式碼(C語言):
#include<stdio.h>
int main()
{
int n,i,x=1,y=1;
scanf("%d",&n);
for(i=0;i<n-1;i++) x=x10;
for(i=0;i<n;i++) y=y

10;
for(i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1,m=n;
while(m–) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sum==i) printf("%d\n",i);
}
return 0;
}
我的程式碼(Java):

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner In=new Scanner(System.in);
int x=1,y=1;
int n=In.nextInt();
for(int i=0;i<n-1;i++) x=x10;
for(int i=0;i<n;i++) y=y

10;
for(int i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1;
for(int j=0;j<n;j++) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sumi) System.out.printf("%d\n", i);
}
}
}
我的程式碼(C++):
#include
using namespace std;
int main()
{
int n,i,x=1,y=1;
cin>>n;
for(i=0;i<n-1;i++) x=x10;
for(i=0;i<n;i++) y=y
10;
for(i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1,m=n;
while(m–) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sum
i) cout<<i<<endl;
}
return 0;
}

轉載至:https://blog.csdn.net/s136424/article/details/78323245