1. 首页 > 科技

39位水仙花数的优化算法? 求水仙花数的算法

39位水仙花数的优化算法?求水仙花数的算法

C语言水仙花数算法

#include<stdio.h>

int main()

{

int i,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);

}

return 0;}

水仙花数的算法

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

水仙花数(算法就行)代码随意

拜托,50位的你要电脑怎样的速度啊!

我编了个js的,运算6位的,就要了6-7秒的时间,运算50位,铁定死机了,代码再怎么优化,需要运算的次数或是遍历位数是一定的,这是高度运算量的编程,我没找到好的算法.先贴给你我的代码.

刚刚修改过,再贴一遍!

我添加了部分注释,优化了一下代码,加了段求个数的代码,再贴给你一下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3./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://baike.baidu/view/152077.htm

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);

}

}

}