正文
go语言如何计算水仙花数 c求水仙花数程序
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
水仙花数
水仙花数是指一个三位整数的百位立方+十位的立方+各位的立方=本身的数字。
例如:153=1^3+5^3+3^3
在100-999中,一共有四个水仙花数,他们是:153 ,370 ,371,407
使用计算机计算的代码,我给出两种语言:
1.Objective-C:
int i,j,k,n ;
int x;
for (n=100; n=999; n++) {
i=n/100;
j=n/10%10;
k=n%10;
if (n==i*i*i+j*j*j+k*k*k) {
x++;
NSLog(@"第%i个水仙花数为%i",x,n);
}
}
2.matlab:
for i=100:999;
a=floor(i/100);
b=floor(i/10)-a*10;
c=i-(a*100+b*10);
if i==a^3+b^3+c^3;
i
end
end
请注意,我分别使用了2种方法分离出一个三位数的个十百位,希望对你有帮助。
如何求取水仙花数?
一、水仙花数(Narcissistic
number)也被称为超完全数字不变数(pluperfect
digital
invariant,
PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong
number),水仙花数是指一个
3
位数,它的每个位上的数字的
3次幂之和等于它本身(例如:1^3
+
5^3+
3^3
=
153)。
二、例题:求取100至100,000以内的所有水仙花数。
思路分析:
1、总体框架
用for遍历指定区间,判定当前循环变量【i】是否为水仙花数:是,则输出到控制台;问题细化为:判定某自然数【i】是否为水仙花数,具体过程由步骤2给出。
2、子框架:判定过程
大致分两步进行:
2.1、准备参数
根据【i】,算得【i】的总位数D(digit);【i】中各位数的D次幂的和sum;
2.2、判定结果
比较sum和【i】值的大小,结果传给【步骤1】;
此时问题进一步细化为:计算总位数D和各位数的D次幂之和sum,具体结果分别由【步骤3】、【步骤4】给出;
3、D的计算
用10累除n,其商截尾取整:n/=10,再放入while语句,统计商变为0时的总累除次数,该次数+1即为D;
4、sum的计算
根据定义,只需利用for循环获取自然数n的各位数的值,在用sum累加各位数的D次幂即可。
具体代码:
运行结果:
扩展资料:
关于c语言水仙花数编程分析举例
1、问题描述
输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153
=
13 +
53 +
33。
2、问题分析
根据“水仙花数”的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为s),若s与给出的三位数相等,
三位数为“水仙花数”,反之,则不是。
3、算法设计
“水仙花数”是指满足某一条件的三位数,根据这一信息可以确定整数的取值范围是
100〜999。对应的循环条件如下:
4、对代码的说明:
将n整除以100,得出n在百位上的数字hun;将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten;将n对10取余,得出n在个位上的数字ind;求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
对于每个位置上的数值将其拆分的算法有很多种,根据不同情况选择不同算法(对于同一问题不同算法的效率有时会相差很多)。
下面是完整的代码:
运行结果:
result
is:153
370
371
407
参考资料:搜狗百科-水仙花数
求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。 编写程序
/*
*“水仙花数”算法
*
*作者go语言如何计算水仙花数:gujifly
*
*时间:2010-10-16
*/
#include "stdafx.h"
#include "stdio.h"
#include "time.h"
int count(int values,int times){ //计算单个值go语言如何计算水仙花数的"水仙花"计算结果
int results=0;
int i=1;
while (values/i0)
{
int tmpp=1;
int tmp=values%(i*10)/i;
for(int j=0;jtimes;j++)
{
tmpp*=tmp;
}
results+=tmpp;
i*=10;
}
return results;
}
void counts(int numbers){ //根据给定go语言如何计算水仙花数的位数go语言如何计算水仙花数,调用count计算并输出整个级别go语言如何计算水仙花数的"水仙花"数
int resultAll=1;
for (int j=0;jnumbers;j++)
resultAll*=10;
for(int i=resultAll/10;iresultAll;i++)
{
if(i==count(i,numbers))
printf("水仙数:%d\n",i);
}
}
int main(int argc, char* argv[]) //main 函数
{
while (1)
{
int x=0;
printf("\n请输入要计算的水仙花位数:\n");
scanf("%d",x);
clock_t start, finish;
double duration;
start = clock();
counts(x);
finish = clock();
duration = (double)(finish-start);
printf("计算所用时间:%f秒\n",duration/1000);
}
return 0;
}
7.编程打印出100~999间所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。
第一种方式分离每位数字:
#includestdio.h
int main()
{
int a,b,c;
int i;
for(i=100;i1000;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 ;
}
第二种方式:三重for循环
#includestdio.h
int main()
{
int a,b,c;
int i,j,k;
for(i=1;i=9;i++)
{
for(j=0;j=9;j++)
{
for(k=0;k=9;k++)
{
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
{
printf("%d%d%d\n",i,j,k);
}
}
}
}
printf("\n");
return 0 ;
}
扩展资料:
水仙花数只是自幂数的一种,严格来说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
……
使用高精度计算,可以得到超过int类型上限的水仙花数:
5: 93084
5: 92727
5: 54748
6: 548834
7: 9800817
7: 4210818
7: 1741725
7: 9926315
8: 24678050
8: 24678051
8: 88593477
9: 146511208
9: 912985153
9: 472335975
9: 534494836
10: 4679307774
11: 32164049650
11:40028394225
11: 42678290603
11: 49388550606
11: 32164049651
11: 94204591914
11: 44708635679
11: 82693916578
14: 28116440335967
16: 4338281769391370
16: 4338281769391371
17: 21897142587612075
17: 35641594208964132
17: 35875699062250035
19: 1517841543307505039
19: 3289582984443187032
19: 4929273885928088826
19: 4498128791164624869
20: 63105425988599693916
21: 449177399146038697307
21: 128468643043731391252
23: 27907865009977052567814
23: 35452590104031691935943
23: 27879694893054074471405
23: 21887696841122916288858
24: 174088005938065293023722
24: 188451485447897896036875
(为环保起见,24位以上的水仙花数略)
最大的水仙花数有39位。十进制自然数中的所有水仙花数共有88个。
能给我解释下水仙数么? 153就是一个水仙数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153)
三位的水仙花数共有4个:153,370,371,407;
四位的水仙花数共有3个:1634,8208,9474;
五位的水仙花数共有3个:54748,92727,93084;
六位的水仙花数只有1个:548834;
七位的水仙花数共有4个:1741725,4210818,9800817,9926315;
八位的水仙花数共有3个:24678050,24678051,88593477
……
……
使用高精度计算,可以得到超过INT类型上限的水仙花数:
5:93084
5:92727
5:54748
6:548834
7:9800817
7:4210818
7:1741725
7:9926315
8:24678050
8:24678051
8:88593477
9:146511208
9:912985153
9:472335975
9:534494836
10:4679307774
11:32164049650
11:40028394225
11:42678290603
11:49388550606
11:32164049651
11:94204591914
11:44708635679
11:82693916578
14:28116440335967
16:4338281769391370
16:4338281769391371
17:35875699062250035
17:21897142587612075
17:35641594208964132
19:1517841543307505039
19:3289582984443187032
19:4929273885928088826
19:4498128791164624869
20:63105425988599693916
21:449177399146038697307
21:128468643043731391252
23:27907865009977052567814
23:35452590104031691935943
23:27879694893054074471405
23:28361281321319229463398
23:21887696841122916288858
24:174088005938065293023722
24:239313664430041569350093
24:188451485447897896036875
(为环保起见,24位以上的水仙花数略)
理论上,最大的水仙花数不超过34位.
以下为在各种编程语言中实现求取水仙花数的方法(非高精度).
◆PHP “水仙花数”实现代码:
水仙花数计算方法是什么?
水仙花数计算方法:是指一个 n 位数 ( n≥3 )go语言如何计算水仙花数,它go语言如何计算水仙花数的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
水仙花数计算方法go语言如何计算水仙花数,是一种程序代码用的方法。好比C语言,Java之类的软件。
关于go语言如何计算水仙花数和c求水仙花数程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。