编程输出水仙花数的程序(编程输出所有的水仙花数,水仙花数是一个
“水仙花数”C语言程序
代码如下:
#include stdio.h
int main()
{
printf("输出水仙花数:\n");
int i=100;
for( ; i1000; i++){
int num_0 = i%10;
int num_1 = i/10%10;
int num_2 = i/10/10%10;
if(i==(num_0*num_0*num_0+num_1*num_1*num_1+num_2*num_2*num_2))
printf("%d\t", i);
}
return 0;
}
扩展资料:
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
n为1时,自幂数称为独身数。显然,0,1,2,3,4,5,6,7,8,9都是自幂数。
n为2时,没有自幂数。
n为3时,自幂数称为水仙花数,有4个:153,370,371,407;
n为4时,自幂数称为四叶玫瑰数,共有3个:1634,8208,9474;
n为5时,自幂数称为五角星数,共有3个:54748,92727,93084;
n为6时,自幂数称为六合数, 只有1个:548834;
n为7时,自幂数称为北斗七星数, 共有4个:1741725,4210818,9800817,9926315;
n为8时,自幂数称为八仙数, 共有3个:24678050,24678051,88593477;
n为9时,自幂数称为九九重阳数,共有4个:146511208,472335975,534494836,912985153;
n为10时,自幂数称为十全十美数,只有1个:4679307774。
参考资料:
百度百科——水仙花数
c++水仙花数的编程是什么?
思路:
初始化i=100。
①取i的各位数,百位a,十位b,个位c。
②判断i==a∧3+b∧3+c∧3 是否成立。
③如果成立则输出,否则不输出。
④i=i+1,当i小于1000重复①,否则结束。
关键算法:取任意三位数的各位数。
①将数除以10取余数得个位c,将该数除以10。
②重复①得到十位b。
③继续重复①得到百位a。
代码实现:
int sum = 0; //求和变量。
int temp=i; //存放数值i,防被覆盖而丢失。
int rem; //余数。
for (int j = 0; j 3; j++)//第一次循环得到个位立方和,第二次循环得到个位与十位立方和...
{ rem = temp % 10; temp /= 10; sum += rem * rem*rem;}
完整代码:
//输出水仙花void NarcissusNumber()
{ for (int i = 100; i 1000; i++)
{ int sum = 0; int temp=i; int rem;
for (int j = 0; j 3; j++)
{ rem = temp % 10; temp /= 10; sum += rem * rem*rem; }
if (sum == i) { printf("%d ", i);
}
}
}
算法一:除减法。
①将数除以100,由整型数据特点,小数点后被忽略,取得百位a。
②该数减去a * 100,除以10,得到十位b。
③该数减去a * 100和b * 10即得个位c。
好处:易理解,菜鸟基本都会这算法。
不足:当数字位数较大时,减法操作需要进行多次,比较代码比较冗长。
算法二:除余法。
①将数除以10取余数得个位c。
②将数除以10后再与10取余得到十位b。
③将该数除以100再与10取余得到百位a。
这种算法对我们菜鸟来说很新奇,难以想到。
即使这样,该算法也不比算法一简洁,所以需要改进。
如何用C#编写一个程序求水仙花数?
C#,使用.Net6编写:
//水仙花数的搜索范围var?index?=?100;?//因为水仙花数要求三位及以上,所以从100开始var?end?=?10000;
//循环主体?如上则范围为?[1,10000]?内寻找for?(;?index?=?end;?index++)?{
//通过?log10?可以取得该数字的位数长度????int?dg?=?(int)Math.Log10(index)?+1;?//将?log10?的位数向下取整保留进制数量的整数(+1是因为后续包含个位数)????//将每一位转换成数字(不使用?string?中?char?转?int,纯数字转换)????var?sum?=?0;?//分位累加器????var?digits?=?new?int[dg];?//创建一个用于单独储存每一位的????for(int?i?=?dg;?i??0;?i--)
{
var?x?=?index?-?sum;?//用于舍去高位,见?P1????????int?dplace?=?(int)Math.Pow(10,?i-1);?//当前位数的值,如?1,10,100,1000...????????var?p?=?x?/?dplace;?//当前位的值????????sum?+=?dplace?*?p;?//将前边已经取得的位计入累加用于在后续舍去(P1)????????digits[dg?-?i]?=?p;?//将位数加在累加器上????}
//判断该数字是否符合条件????var?nn?=?0;
foreach(var?d?in?digits)
{
nn?+=?(int)Math.Pow(d,?dg);?//所有位?的位数幂?求和????}
if(nn?==?index)?//当所有位的位数幂的和等于这个数本身时返回结果????{
Console.WriteLine($"{index}?是水仙花数");
}
}
C语言编程输出所有的“水仙花数”。
1、首先需要打开Dev-c++软件,点击“新建源代码”。
2、然后按照如图所示填写代码。
3、其中:a表示的是水仙花数的百位数,b表示的是水仙花数的十位数,c表示的是水仙花数的个位数,sum表示的是所有累加下来的水仙花数。
4、if(sum==a*a*a+b*b*b+c*c*c)这一个程序步骤的作用是在规定查找的范围内找到符合这个条件的数。
5、注意a,b,c,sum的运算过程都是要在for 循环内完成,不可以在外循环进行。
6、而且还要注意区分在赋予百位数、十位数、个位数的计算用的“/","%”的区别,“/”表示除后取整数,“%”表示除后取余数。
7、最后点击“运行”即可得出要找的结果了。
c语言水仙花数的编程
c语言水仙花数的编程:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。具体的代码如下图。
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)。
常见水仙花数:
三位的水仙花数共有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。
以上内容参考:百度百科-水仙花数