水仙花数c语言,如何判断一个数是否是水仙花数?
1、代码
#include
2、说明
将n整除以100,得出n在百位上的数字hun。
将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten。
将n对10取余,得出n在个位上的数字ind。
求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
水仙花数有什么用?
main()
{
int n,a,b,c;
for(n=100;n<=999;n++)
{
a=n/100;
b=n%100/10;
c=n%10;
if(a*a*a+b*b*b+c*c*c==n) printf("%d\n",n);
}
}
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
三位的水仙花数共有4个:153,370,371,407;
加一下就可以了,
153+370+371+407=1301
C语言:
#include <stdio.h>
int main(void)
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
return 0;
}
输出所有的水仙花数?
水仙花数是指各位数字的立方和等于该本身的三位数。
方法一:首先确定水仙花数n的可能的取值的范围,因为n是一个三位数,所以其取值在100-999之前变化。显然这是一个技术控制二点循环。对于n的每一个可能的取值,首先分离出其百位数字i、十位数字j、个位数字k,然后通过判定可确认n是否为水仙花数。
方法二:设水仙花数的百位十位个位数字分别是i、j、k,通过遍历i、j、k的所有取值(注意i不能为0,对于三位数而言),并进行判断。
判断是否为水仙花数?
1、严格的水仙花是三位数,并且其每位数的三次方的和等于它的本身。
例子如下:370是一个严格的水仙花数,3^3+7^3+0^3=370.
2、C 语言的"水仙花数"实现代码:
#include
#include
int main (void) {
long n,p;
long c,a,j,s[30],i,q;
p=0;
a=10;
scanf("%ld",&n);
q=n;
for (i=1;c>10 ;++i) {
c=n/a;
a=a*10;
}printf("i=%ld,a=%ld \n",i,a);
for (j=1;a>=10 ;++j) {
s[j]=n/(a/10);
n=n-s[j]*(a/10);
a=a/10;
printf("j=%ld,a=%ld\n",j,a);
}
for (j=1;j
p+=pow(s[j],i);
printf("p=%ld,i=%ld\n",p,i);
}
if (p==q) {
printf("%ld 为水仙花数",q);
}else {
printf("%ld 该数不是水仙花数",q);
}
return 0;
}
编写C语言程序打印水仙花数?
代码内容:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
}
getch();
}
资料拓展:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。