C语言趣味编程之水仙花数

目录
  • 题目描述
  • 分析
  • 代码实现
  • 运行结果

题目描述

求出所有的水仙花数

分析

百度百科:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:13 + 53+ 33 = 153。

判断一个数是否为水仙花数,可以先将该数的所有位都取出并存入数组,最后代入水仙花数的公式,如果满足水仙花条件,该数即为水仙花数。

代码实现

#include <stdio.h>

#define INTEGER_MAXIMUM 999  //数字范围,最大值
#define INTEGER_MINIMUM 100  //最小值

int if_narcissistic_number(int num);

int main()
{
    int i = 0;
    for(i = INTEGER_MINIMUM; i <= INTEGER_MAXIMUM; i++)
    {
        if(if_narcissistic_number(i))
        {
            printf("%d ", i);
        }
    }
    printf("\n已求出所有水仙花数\n");
    return 0;
}

/**
 * @brief 判断是否为水仙花数
 * @return 1:是水仙花数;0:不是水仙花数
 */
int if_narcissistic_number(int num)
{
    /* 如果不是3位数 */
    if(num < 100 || num > 999)
        return 0;

    int hundreds = num / 100; //百位
    int tens = num / 10 % 10; //十位
    int ones = num % 10;      //个位

    if(num == hundreds * hundreds *hundreds +\
            tens * tens * tens +\
            ones * ones * ones)
        return 1;
    return 0;
}

运行结果

(0)

相关推荐

  • C语言趣味编程之平分七筐鱼

    目录 题目描述 分析 代码实现 运行结果 网上参考 题目描述 甲.乙.丙三位渔夫出海打鱼,他们随船带了21只箩筐.当晚返航时,他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐则是空的,由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的.在不将鱼倒出来的前提下,怎样将鱼平分为3份? 分析 这题还有两个隐形要求:三个人分得的箩筐数量相同(7只):列出所有的平分方法. 我的思路(参照网上他人方法) 首先,所有的鱼所占的箩筐数为7+7*0.5=10.5只(7只满筐和7

  • C语言线性代数算法实现矩阵示例代码

    目录 C语言实现矩阵 特殊矩阵 特殊矩阵验证 C语言实现矩阵 矩阵作为一个结构体而言,至少要包含行数.列数以及数据. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ int row, col, size; double *data; } Matrix; 特殊矩阵 接下来通过这个结构体实现一些特殊的矩阵,例如包括相同元素的矩阵.对角矩阵等. #define SetBase

  • 用C语言递归实现火车调度算法详解

    目录 1.代码 2.代码详解 3.用二叉树表示调用过程 4.思维导图 笔者在李云清版的<数据结构>中第二章遇到了这道经典的火车调度题,经过对一些前辈的代码进行学习,以下将这段火车代码进行分析详解,不对之处,还请各位大佬指示,不胜感激! 1.代码 题目如下: 2.8编号为1,2,3,4的四列火车通过一个栈式的列车调度站,可能得到的调度结果有哪些?如果有n列火车通过调度站,请设计一个算法,输出所有可能的调度结果. 算法运用的思想是运用栈+递归,算法的难点也在于此.先上代码: #include &l

  • C语言编程递归算法实现汉诺塔

    汉诺塔 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面.僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔.庙宇和众生也都将同归于尽. 这个传说挺有意思的,这个传说

  • C语言趣味编程之水仙花数

    目录 题目描述 分析 代码实现 运行结果 题目描述 求出所有的水仙花数 分析 百度百科:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身.例如:13 + 53+ 33 = 153. 判断一个数是否为水仙花数,可以先将该数的所有位都取出并存入数组,最后代

  • C语言水仙花数的实现

    什么水仙花数? 水仙花数其实是自幂数的一种,自幂数是一个自然数中它每个个位上的数字n次方相加之和为它本身!,这里n可以称为立方指数! 而水仙花数的n次方的n是3,这里3可以称为自然数的立方指数 次方即为自身相乘多少次,一般用^表示,比如1的3次方表示为:1^3 比如153这个数是一个水仙花数,为什么呢? 下面我们用公式来看一下: 153有三个数位 1.5.3 1的三次方为1: 1*1*1=1 列: 1*1=1 1*1=1 5的三次方为125: 5*5*5=125 列: 5*5=25 25*5=1

  • Java和C语言分别实现水仙花数及拓展代码

    目录 前言 一.水仙花数 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 二.拓展 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 前言 求出0-999之间的所有"水仙花数"并输出.("水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个"水仙花数".) 一.水仙花数 因为水仙花数是三位数,所以我们把范围定为1

  • C语言 简单粗暴的笨方法找水仙花数

    什么是水仙花数: 指一个n位数,其各位数字的n次方之和确好等于该数本身 例如:    1         1^1=1: 153      3^3+5^3+1^3=153; 问题:求0~100000之间的水仙花数,并打印出来 看题目,找突破口: 0~100000  我可以想到用循环来判断0~10000间的数字 由栗子可知:我们需要求数字是几位 要用到次方,则我们需要引用math函数库里的pow函数 求和,依旧要使用循环 那么开始写代码,走一步思考一步: #include <stdio.h> #i

  • C语言深入探究水仙花数与变种水仙花数代码

    目录 1.水仙花 1.1先看代码 1.2大体逻辑 2.变种水仙花数 2.1先看代码 2.2代码剖析 1.水仙花 题目: 1.1先看代码 #include <stdio.h> int main() { int i = 0; int count = 0; for (i = 100; i<= 999; i++) { int a = i / 100; int b = (i % 100)/10; int c = (i % 100)%10; if (i == a * a * a + b * b *

  • C语言经典算法例题求100-999之间的“水仙花数

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方. 实现代码如下 #include <iostream> #include <Cmath> using namespace std; /* 求100-999之间的水仙花数 */ int main() { int number,hun,ten

  • C语言经典算法例题求100-999之间的“水仙花数”

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方. 实现代码如下 #include <iostream> #include <Cmath> using namespace std; /* 求100-999之间的水仙花数 */ int main() { int number,hun,ten

  • Python实例练习水仙花数问题讲解

    目录 1. 问题描述 2. 问题分析 3. 算法思路 4. 代码实现 for循环代码实现 while循环代码实现 1. 问题描述 水仙花数也被称为超完全数字不变数.自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身. 1.水仙花数是一个三位数:111 333 456 999 530 2.水仙花数的个位.十位.百位的数字立方和等于原数 小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!

  • java计算自然数中的水仙花数的方法分享

    核心代码 /** * m-n自然数中的水仙花数 * @param n * @param m */ static void getNums(int n,int m){ for(int i=m;i<=n;i++){ int ge,shi,bai; double shui; bai=i/100; shi=i%100/10; ge=i%10; shui=Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge, 3); if(i==shui) System.out.pr

随机推荐