1. 程式人生 > >【C語言】列印水仙花數

【C語言】列印水仙花數

題目:用C語言列印1000以內的水仙花數,“所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。 

           例如:153是一個“水仙花數”,因為153=1^3+5^3+3^3(1的三次方+5的三次方+3的三次方)

 

解題思路一:在100~1000以內的整數中逐個判斷,先求出該數各個數位的數字,然後各個數位數字三次方和這個數比較,等於這個數說明為水仙花數

解法1:用for迴圈實現

#include<stdio.h>
 
int main()
{
	int i;
	int a,b,c;//a為個位數字,b為十位數字,c為百位數字 
	for(i=100;i<1000;i++)
	{
		a=i%10;
		b=i/10%10;
		c=i/100;
		
		if(i==(a*a*a+b*b*b+c*c*c))
		{
		    printf("%d\n",i);
		}
		
	}
	return 0;
}

 解法2:用while迴圈實現

#include <stdio.h> 

int main()
{
	
	int i=100;
	int a,b,c;//a為個位數字,b為十位數字,c為百位數字 
	while(i>=100 && i<1000)
	{
		a=i%10;
		b=i/10%10;
		c=i/100;
 
  		if(i==a*a*a+b*b*b+c*c*c)
		{
	     	   printf("%d\n",i);
		}
		i++;
	}
	return 0;
}

執行結果:

 

解法思路2:分別從三個位上的數字入手, 如果這三個數的立方和等於這個三個數的組合,則說明這個組合數就是水仙花數。

解法3:用for迴圈實現

#include <stdio.h> 

int main()
{
	
	int i;  //c,b,a形成的組合數
	int a,b,c;  //a為個位數字,b為十位數字,c為百位數字 
	for(c=1;c<=9;c++) 
	{
	    for(b=0;b<=9;b++)
	    {
     		for(a=0;a<=9;a++)
     		{
     			i=c*100+b*10+a;
     			if(i==a*a*a+b*b*b+c*c*c)
     			{
	     	          printf("%d\n",i);
     			}
     		}
	    }
	}
	return 0;
}

 執行結果: