1 水仙花数概念及“常见”水仙花数

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

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

常见水仙花数

水仙花数又称阿姆斯特朗数。

三位的水仙花数共有4个:153,370,371,407;

四位的四叶玫瑰数共有3个:1634,8208,9474;

五位的五角星数共有3个:54748,92727,93084;

六位的六合数只有1个:548834;

七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;

八位的八仙数共有3个:24678050,24678051,88593477;

九位的九九重阳数共有4个: 146511208,472335975,534494836,912985153;

十位的自幂数只有1个:4679307774

2.求三位数水仙花数以及指定位数的水仙花数

所以求水仙花数的关键就是把每个位上的数字求出来,然后求出它们的幂次方之和,与求的这个数相比是否相等,相等就是水仙花数,然后输出,判断下一个数,直到判断完最后一个n位的数为止。

(1)求三位数的水仙花数

#include<stdio.h>
int main() {int m,n,i,a,sum;for(a=100; a<=999; a++) {//所有三位数m=a/100;//求最高位的数字 n=(a-m*100)/10;//求十位数字,先剪掉百位数字再求(352求十位时要减去3*100) i=a-m*100-n*10;//个位 sum=m*m*m+n*n*n+i*i*i;//算出幂次方的和,然后比较 if(sum==a) {printf("%d ",a);}}return 0;
}

运行结果

(2)求指定位数的水仙花数

#include <stdio.h>
#include <math.h>
int main() {int a,m,n,i,j,sum;printf("输入需要求水仙花的位数:\n");scanf("%d",&a);for(n=pow(10,a-1); n<pow(10,a); n++) {j=0;//初始化j,防止上一次循环的j对本次造成干扰,以下同理int y=0;sum=0;for(i=a-1; i>=0; i--) {//循环三次求每个位数的值m=pow(10,i);//m为10的i次方if(i!=0) {j=(n-y)/m;//y为前面位数的和,比如求四位数的水仙花数时,//如1503,第一个是求1,此时n减去0除以1000;第二位求5,//n减去j乘以1000再除以100} else {j=n-y;//求个位数字时直接减掉前面的和}y+=j*pow(10,i);//y为前几位的和,比如第一次求最大位1时,y为0,到这里就变成j乘以1000了sum+=pow(j,a);//幂次方的和}if(sum==n) {//判断时否为水仙花数printf("%d ",n);}}return 0;
}

这里用math.h中的pow函数表示幂次方

结果如下

制作不易,还请各位帅哥美女点个赞鼓励一下我这个小白!爱你!!!

C语言中求指定位数的水仙花数相关推荐

  1. python 求3位数的水仙花数_python 求3到8位数的水仙花数Pycharm实现

    #-*- coding: utf-8-*- import time import math #获取3位数的水仙花数 start1 = time.time() start = time.time() n ...

  2. C++求三位数的水仙花数

    #include<iostream>using namespace std;int main() {/**个数的3次方+十位的三次方+百位的三次方=这个数的本身*/for (int i = ...

  3. C++中如何读取一个数的位数_求1000以内的水仙花数

    点击上方 蓝字关注我们 大家好,我是阿汤哥. 看知乎上有朋友说还不明白怎么判断水仙花数,今天我们就来看看这个问题.(PS:"求1000以内的水仙花数"这道题阿汤哥记忆犹新.到现在还 ...

  4. C语言,C#语言求100-999内的水仙花数源程序

    水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armst ...

  5. 升序输出三个数_C语言入门经典例题:求100~999的水仙花数

    ​C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制). C++,首要考虑的 ...

  6. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  7. 输出所有3位数的水仙花数,例:153=1的3次方+5的3次方+3的3次方 谭浩强《c语言程序设计》第五章第八题

    题目 本题是谭浩强<c语言程序设计>第五章第八题 题目:输出所有3位数的水仙花数,例:153=1的3次方+5的3次方+3的3次方 提示:以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨 ...

  8. java求学生的总分和平均分_c语言中求课程总分、平均分。学生总分及平均分

    c语言中求课程总分.平均分.学生总分及平均分 1. #include stdio.h int main(void) { int i, j; int a[6][2]; puts("please ...

  9. C语言求1000以内的水仙花数

    问题:求出0-999之间的所有"水仙花数"并输出. "水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个&q ...

最新文章

  1. 光纤跳线接口的种类及适用范围
  2. 【学术相关】翻倍!研究生招生规模持续扩张!
  3. 并发问题是怎样造成的
  4. (2.1)HarmonyOS鸿蒙Ability创建,XML和Java页面布局UI
  5. cos大乱斗服务器维护,《COS大乱斗》服务器数据互通公告
  6. mac qt编译出现问题的解决方法
  7. TensorFlow tf.keras.layers.Embedding
  8. paip.SQL特殊字符转义字符处理
  9. C站一名 普通技术博主 的终端与【开端】,因为热爱,所以习惯,2021~2022
  10. 一站式WPF--依赖属性(DependencyProperty)一
  11. 阿里内网最新发布“M8”级Java面试笔记,助力金九银十
  12. c语言勾股定理已知斜边,C语言 · 勾股数
  13. 用户画像分析与场景应用
  14. python主题更改_jupyter notebook更换皮肤主题的实现
  15. 服务器显示url过长,post跳转页面避免414提示url过长
  16. 小孩学python有意义吗-小孩Python编程培训有用吗
  17. 论文笔记《End-to-End Training of Hybrid CNN-CRF Models for Stereo》用于立体评估的端到端训练的混合CNN-CRF模型
  18. 表示数值的字符串——《剑指offer》
  19. 独立游戏开发者的一些PR经验
  20. 经验分享 | 如何搭建企业管理驾驶舱

热门文章

  1. linux pkg文件,技术|Linux 包管理基础:apt、yum、dnf 和 pkg
  2. python安全渗透笔记
  3. 虚拟机中linux磁盘空间不足
  4. Syntax error on token Invalid Regular Expression Options, no accurate corr
  5. 【C++】《披着clion的外衣实则在讲cmake》的知识点目录
  6. Enigma - Structural image processing protocol (结构图像处理协议协议)
  7. iphone的ibooks如何导入pdf?
  8. 第五季完美童模 形象大使林子懿现场走秀回顾
  9. 爱贝云计费服务端接入
  10. Nginx 配置 SSL 证书 + HTTPS 站点小记