“水仙花数”你了解多少??

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。

/*

在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。

例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:

153 = 1^3 + 5^3 + 3^3。

370 = 3^3 + 7^3 + 0^3。

371 = 3^3 + 7^3 + 1^3。

407 = 4^3 + 0^3 + 7^3。

*/

那么用C语言又该如何去求出它呢?

对于初学者,我们首先要知道要求得一个数并且使它满足“水仙花数”的条件,就必须对它取余,也就是拿出一个数的每个位上的数。若取得的每个位上的数的立方和相加等于这个数,我们则把它输出来。

假如我们要求出0~999之间的所有“水仙花数”。

那么我们给出程序如下:

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

int i = 100;

int num1 = 0;

int num2 = 0;

int num3 = 0;

int num = 0;

int a = 0;

while (i < 1000)

{

a = i;

num1 = a % 10;

a = a / 10;

num2 = a % 10;

a = a / 10;

num3 = a % 10;

num = pow(num1, 3) + pow(num2, 3) + pow(num3, 3);

if (num == i)

printf("%d ",i);

i++;

}

system("pause");

return 0;

}

时间: 2024-10-05 20:32:36

“水仙花数”你了解多少??的相关文章

筛选水仙花数

//水仙花数--个位的平方+十位的平方+百位的平方(等于==)该三位数 #include<stdio.h>int main(){ int ge,shi,bai; //从100开始筛选for(int i=100;i<1000;i++){ ge=i%10; shi=i/10%10; bai=i/100%10; if(a==ge*ge*ge+shi*shi*shi+bai*bai*bai){//水仙花数的判断条件 //输出 printf("%d\t",i); }} retu

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

51NOD 1016 水仙花数 V2(打表)

传送门 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4). 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 10^60) Output 输出>= M的最小的水仙花数,如果没有符合条件的水仙花数,则输出:No Solution Input示例 300 Output示例 370 解题思路:

水仙花数

描述 请判断一个数是不是水仙花数.其中水仙花数定义各个位数立方和等于它本身的三位数. 输入 有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000) 输入0表示程序输入结束. 输出 如果n是水仙花数就输出Yes 否则输出No 样例输入 153 154 0 样例输出 Yes No 1 #include <stdio.h> 2 3 int main(){ 4 int number; 5 int sum; 6 int temp; 7 8 while(1){ 9 scanf(

如何用C#寻找100到999的所有水仙花数?

首先解释一下何为水仙花数:水仙花数只是自幂数的一种,严格来说是三位数的个位.十位.百位的3次幂数相加等于原来的数字,称为水仙花数.(例如:1^3 + 5^3+ 3^3 = 153) 那么如何通过C#语句来解决这个问题呢? 分析:想要找到百位的水仙花数,要解决的问题由两个,第一个是如何让计算机正确分离出百位数的个位.十位.百位的数字.第二个是如何将其不断循环让100到999都能经过检验. 第一个问题:将这个数值类型定义为整型int(这种数据类型的数字是没有小数点的) 最高位数字--对100整除,则

3 水仙花数

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位. 1 @SuppressWarnings({"rawtypes","unchecked"}) 2 public class _003ShuiXianFlo

每日一练第3天:水仙花数

输出100~999中的所有水仙花数.若3位数 ABC 满足 ABC=A3 +B3 +C3 ,则称其为水仙花数.例如153=1 3 +5 3 +3 3 ,所以153是水仙花数. 代码如下: 1 #include <stdio.h> 2 3 int main() 4 { 5 int i; 6 for(i = 100; i < 1000; ++i) 7 { 8 int x = i / 100; // 获得百位 9 int y = (i / 10) % 10; // 获得十位 10 int z

C语言 &#183; 4-3水仙花数

问题描述 打印所有100至999之间的水仙花数.所谓水仙花数是指满足其各位数字立方和为该数字本身的整数,例如 153=1^3+5^3+3^3. 样例输入 一个满足题目要求的输入范例.例:无 样例输出 153xxxxxx 代码如下: 1 #include<stdio.h> 2 int main(){ 3 int a,b,c; 4 for(int i=100; i<1000; i++){ 5 a = i / 100 % 10; 6 b = i / 10 % 10; 7 c = i / 1 %

打印出100到999的水仙花数

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个水仙花数,因为153=1*1*1 + 5*5*5 + 3*3*3 1 public class Flower 2 { 3 public static void main(String[] args) 4 { 5 int temp=0; 6 System.out.println("水仙花数为:"); 7 for (int i=100;i<999 ;i++ ) 8 { 9 temp =

打印水仙花数

问题分析:水仙花数的特征是是一个三位数,它的每位上的数的立方和等于这个数本身,所以要想找出千以内的所有水仙花数,需要用到穷举法.而穷举法可以用一个for循环,也可以用三层for循环,而本程序用的是三层for循环. 源代码: #include<stdio.h> main() {  int i,j,k,m;  for(i=1;i<=9;i++)    for(j=0;j<=9;j++)       for(k=0;k<=9;k++)       {      m=100*i+10