水仙花算法
‘壹’ 水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
100~999之间的水仙花数:153,370,371,407
‘贰’ 水仙花数是什么
水仙花数是一个三位数,其各位上数的立方和等于这个数,例如153,13+53+33=153,为什么称为
“水仙花数”,因为是三个数的三次幂,与水仙花的花朵数吻合。
#include<stdio.h>
intmain()
{
inti,j,k,n;
printf("水仙花数是:");
for(n=100;n<=999;n++)
{
i=n/100;
j=n%100/10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)//=改为==
//printf("%d",n);
//printf("");//以上两句合并为下面这一句,否则会有大量空格
printf("%d",n);
}
return0;}
‘肆’ 水仙花数的算法
Private Sub Form_Click()
Dim a As Long, b As Long, c As Long, x As Long, y As Long, z As Long, t As Long
t = a * 100 + b * 10 + c
For a = 1 To 9
For b = 1 To 9
For c = 1 To 9
z = c ^ 3
y = b ^ 3
x = a ^ 3
if t = x + y + z then
Print a
Print b
Print c
Next c
Next b
Next a
End Sub
‘伍’ 设计算法:水仙花数问题
#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≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
‘柒’ c语言水仙花数
#include <stdio.h>
int main()
{
int start, end, i = 0, a, b, c, size = 0;
while (scanf("%d %d", &start, &end) == 2)
{
for (i = start; i <= end; i++)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
//total = pow(c, 3) + pow(a, 3) + pow(b, 3);
if ((a*a*a + b*b*b + c*c*c) == i) //满足水仙花条件
{
if (size == 0) //size=0输出第一个水仙花数
{
printf("%d", i);
}
else //size++输出第二。。第n个水仙花数
{
printf(" %d", i);
}
size++; //个数++;
}
}
if (size == 0) //范围内个数为0,则说明没有满足条件的
{
printf("no");
}
printf(" ");
}
return 0;
}
(7)水仙花算法扩展阅读:
需要注意的地方:
1.将n整除以100,得出n在百位上的数字hun。
2.将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten。
3.将n对10取余,得出n在个位上的数字ind。
4.求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
网络-水仙花数
‘捌’ 水仙花数C语言
for(n=100;n<=999;n++) ; 把这个分号去掉就可 以了
‘玖’ java中求解水仙花数的算法思想是什么
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
从上面的定义可以看出,只要将给出的数字各个位数的数字分解出来,然后把个数字的3次方相加与原数相比是否相等即可判断出是否为水仙花数,给你一段源码,是求100~1000内的水仙花数,有注释,希望对你有帮助:
public class Wflower {
public static void main(String[] args) {
int a=0,b=0,c=0;
System.out.println("水仙花数是:");
for (int i = 100; i < 1000; i++) //遍历所有3位数
{
a = i/100; //获取3位数中百位的数
b=i%100/10; //获取3位数中十位的数
c=i%100%10; //获取3位数中个位的数
a = a * a * a; //计算第一位数的立方
b = b * b * b; //计算第二位数的立方
c = c * c * c; //计算第3位数的立方
if ((a + b + c) == i) //如果符合水仙花数
System.out.print(" "+i);
}
}
}
‘拾’ 水仙花数(算法就行)代码随意
拜托,50位的你要电脑怎样的速度啊!
我编了个js的,运算6位的,就要了6-7秒的时间,运算50位,铁定死机了,代码再怎么优化,需要运算的次数或是遍历位数是一定的,这是高度运算量的编程,我没找到好的算法.先贴给你我的代码.
刚刚修改过,再贴一遍!
我添加了部分注释,优化了一下代码,加了段求个数的代码,再贴给你一下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function fun(){
//取得参量位数
var valnum=parseInt(document.frm.input.value);
//求得符合参量位数的最大值和最小值
var highnum=Math.pow(10,valnum)-1;
var lownum=Math.pow(10,valnum-1);
//输出队列的组成部分
var output="共有个数:",res_str="";
//a为i分解为数组的下脚值,num为符合规则的水仙花的个数
var a=0,num=0;
//遍历所有符合参量位数的数
for(i=lownum;i<=highnum;i++){
//res为水仙花数规则值,即n位的数的每位数的n次幂的和,预置为0
var res=0;
//分解出当前i的每位数并存如数组
var new_i=i.toString().split("");
for(a=0;a<=valnum-1;a++){
//求得水仙花数规则值
res=Math.pow(parseInt(new_i[a]),valnum)+res;
}
//判断符合水仙花数的个数,如符合则将水仙花数并入输出队列
if(res==i){
num++;
res_str=res_str+"<br>"+res;
}
}
//输出队列
if(valnum<3){output="你输入了无效位数!";}
else{output=output+num+res_str;}
//输出
document.getElementById("divnum").innerHTML=output;
}
</script>
</head>
<body><form name="frm">
<label>请输入水仙花的位数(N>=3):</label><input type="text" name="input" value="">
<input value="运算" type="button" onclick="fun()" />
</form>
<div id="divnum" style=" position:absolute;left:100px;width:200px;top:100px;"></div>
</body>
</html>
以上另存为html文件,用浏览器打开就行.
另:网络附有其他语言的编程方法,我看了一下,好像就只是算100-999的固定位数的水仙花数,没有提供可变位数参量.我补充了一下那个词条.你可以借鉴一下.
http://ke..com/view/152077.htm