当前位置:首页 » 网页前端 » web开发通过按钮求水仙花数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web开发通过按钮求水仙花数

发布时间: 2022-09-04 22:15:40

㈠ 有C#编写查找10000内的水仙花数。

例:
for (int i = 100; i < 1000; i++) { int = 0; int shi = 0; int ge = 0; int yushu = 0; = i / 100; yushu = i % 100; shi = yushu / 10; ge = yushu % 10; if (i == * * + shi * shi * shi + ge * ge * ge) { Response.Write("水仙花数:" + i + "<br>"); } }

㈡ VB编写程序,求100到1000之间所有水仙花数,编写Function过程判断是否是“水仙花数”。

一个form,一个按钮

PrivateSubCommand1_Click()
Fori=100To1000'如果算1000这个数的话就这样写,不算的话就to999
sxhs(i)
Nexti
EndSub

Functionsxhs(numAsInteger)
If((num100)^3)+((numMod100)10)^3+(numMod10)^3=numThen
Printnum;
EndIf
EndFunction

效果图

㈢ VB编程,找出所有的“水仙花数”。

这个程序在VB中与VC中是有些些不同的,因为VC中当定义每位为整型时,它不会有四舍五入规则的,而VB中则不同。比如:VC中(153/100)%10=1,而VB中它算出来的为2,所以注意这个就可以了。在VB中就先从个位判断,是否超过或等于5,是的话就让它减去0.5,不是的话直接操作。
VB中程序如下:一个按钮,一个标签就可以了。
Dim m As Integer
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As Integer 'm,m1,m2,m3最好是分开定义不然会出现ByRef参数类型不符的错误
Dim str As String
Private Sub Command1_Click()
For m = 100 To 999
m3 = m Mod 10
If m3 >= 5 Then
m2 = (m / 10 - 0.5) Mod 10 '因为当个位数大于5时,m/10会进一位,即十位会比原来的数据多1,所以要把这个四舍五入的位取消五入规则
Else
m2 = (m / 10) Mod 10
End If

If m2 >= 5 Then
m1 = m / 100 - 0.5 '原因同上
Else
m1 = m / 100
End If

If ((cubic(m1) + cubic(m2) + cubic(m3)) = m) Then
str = str + CStr(m) + vbCrLf '把每计算出的数据存到str中,并换行
Label2.Caption = str
End If
Next m
End Sub
Function cubic(data As Integer) As Double
cubic = data * data * data
End Function
结果如下图:

㈣ 用vb编程 水仙花数 求程序。万分感谢

Private Sub Command1_Click()
For i = 100 To 999
a = Mid(i, 1, 1)
b = Mid(i, 2, 1)
c = Mid(i, 3, 1)
If a ^ 3 + b ^ 3 + c ^ 3 = i Then
Debug.Print i & "=" & a & "^3+" & b & "^3+" & c & "^3"
End If
Next i
End Sub

㈤ 用C#语言,100到1000“水仙花”数!!

for (int i = 100; i < 1000; i++) { int = 0; int shi = 0; int ge = 0; int yushu = 0; = i / 100; yushu = i % 100; shi = yushu / 10; ge = yushu % 10; if (i == * * + shi * shi * shi + ge * ge * ge) { Response.Write("水仙花数:" + i + "<br>"); } } 追问: Response.Write(" 水仙花数 :" + i + "<br>"); 为什么不是Console.WriteLine("水仙花数:"+i+"<br>"); <br>是什么意思?? 回答: Console.WriteLine()是输出到屏幕的,一般用在控 制台 程序中,而且输出的是一行。下一个输出在下一行显示。 Response.Write()是输出到网页的,一般用在WebSite或者WebApplaction中,输出的不是一行。下一个输出接续上一个输出的末尾,加上<br>是为了换行。

记得采纳啊

㈥ 水仙花数的求取方法(非高精度)

以下为在各种编程语言中实现求取水仙花数的方法(非高精度)。 program narcissistic_number;var a,b,c:integer;begin
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if a*a*a+b*b*b+c*c*c=100*a+10*b+c then
writeln(100*a+10*b+c);
end.

program narcissistic_number;var a,b,c,d:integer;begin
for a:=100 to 999 do
begin b:=a mod 10; c:=a mod 100 div 10; d:=a div 100;
if b*b*b+c*c*c+d*d*d=a then
writeln(a);
end;
end.

program narcissistic_number;var a, b, c, i, t : integer;
begin i := 100; repeat a:=trunc(i/100);
b:=trunc(i/10) - a*10; c:=i-trunc(i/10) * 10;
t := a*a*a + b*b*b + c*c*c;
if i = t then
writeln(i,'=',a,'^3+',b,'^3+',c,'^3');
i := i + 1 until i > 999
end. C Print all the Narcissistic numberC between 100 and 999
WRITE(*,30)
DO 10 K=100,999 IA=K/100 IB=MOD(K,100)/10 IC=MOD(K,10)
IF(K.NE.IA**3+IB**3+IC**3) GOTO 10
WRITE(*,20)K, IA,IB,IC10 CONTINUE20
FORMAT(5X,4I4)30
FORMAT(5X,18HN=I**3+J**3+K**3)
STOP
END <%
dim a,b,c,d,m,n,z
i=1
for i=100 to 999
a=mid(i,1,1)
b=mid(i,2,1)
c=mid(i,3,1)
d=a*a*a
m=b*b*b
n=c*c*c
z=d+m+n
if z=i then
response.write z & <br>
end if
next
%>
Visual FoxPro 用表单实现法(只计3位)
方法一:
clear
for a=1 to 9
for b=0 to 9
for c=0 to 9
x=a*100+b*10+c
if x=a^3+b^3+c^3
?x
endif
endfor
endfor
endfor
方法二:
(1)创建表单Form1并添加文本框Text1与命令按钮Command1
(2)修改Command1的Caption属性为“计算并显示”
(3)为Form1添加方法sxh
(4)修改方法sxh代码如下
para x
x1=int(x%10)
x2=int(x/10)%10
x3=int(x/100)%100
if x=x1^3+x2^3+x3^3
return .t.
else
return .f.
endif
(5)为Command1的Click事件编写如下的事件代码:
thisform.currentx=thisform.width/2
thisform.currenty=thisform.height/2
thisform.print(水仙花数是:)
for m=100 to 999
thisform.text1.value=m
sure=thisform.sxh(m)
if sure=.t.
thisform.print(str(m,4)+space(3))
inkey(0.5)
endif
for 延迟=1 to 20000
yiru=2008610029
endfor
endfor
this.enabled=.f. 1-999999之间
REM Print all the Narcissistic numberREM between 1 and 999999FOR i = 1 TO 999999 e$ = STR$(i) a$ = MID(e$, 1, 1) b$ = MID(e$, 2, 1) c$ = MID(e$, 3, 1) d$ = MID(e$, 4, 1) a = VAL(a$) AND b = VAL(b$) AND c = VAL(c$) AND d = VAL(d$) IF i = a ^ 4 + b ^ 4 + c ^ 4 + d ^ 4 THEN PRINT i;NEXT iENDPB 实现的方法(只计3位数)
int s,a,b,c
for s=100 to 999
a=integer(s/100)
b=integer((s - a*100)/10)
c=s - integer(s/10)*10
if s=a^3+b^3+c^3 then
messagebox(,s)
end if
next (100-999)
var a,b,c,d:integer;begin for a:=100 to 999 do begin b := a div 100; c := a div 10 mod 10; d := a mod 10; if b*b*b+c*c*c+d*d*d=a then memo1.Lines.Add(inttostr(a)) endend; (100-999)
方法一:
for m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
if m==m1^3+m2^3+m3^3
disp(m)
end
end
方法二(可现不定位数解):
n=Input[请输入大于2的自然数n:];
For[i=10^(n-1),i<10^n-1,i++,
If[Total[IntegerDigits^IntegerLength]==i,
Print]]
BASH 脚本实现计算100-999之内数#!/bin/bashfor (( a=1; a<10; a++ ))do for (( b=0; b<10; b++ )) do for (( c=0; c<10; c++ )) do number1=$((a*100+b*10+c)) number2=$((a**3+b**3+c**3)) if [ $number1 -eq $number2 ]; then echo $number1 fi done donedone易语言代码 求指定范围内水仙花数
.版本 2
.子程序 取出水仙花数, 整数型, , 返回范围内水仙花数个数,如果范围过大将会十分耗时
.参数 起始数字, 整数型, , 从此数开始判断是否为水仙花数
.参数 结束数字, 整数型, , 此数必须大于起始数字
.参数 保存得到水仙花数的数组, 整数型, 可空 数组
.局部变量 数字数组, 文本型, , 0
.局部变量 水仙花数, 整数型, , 0
.局部变量 总和, 整数型
.局部变量 计次, 整数型
.局部变量 计次2, 整数型
.如果真 (起始数字 > 结束数字)
清除数组 (保存得到水仙花数的数组)
返回 (0)
.如果真结束
.变量循环首 (起始数字, 结束数字, 1, 计次)
.计次循环首 (取文本长度 (到文本 (计次)), 计次2)
加入成员 (数字数组, 取文本中间 (到文本 (计次), 计次2, 1))
处理事件 ()
.计次循环尾 ()
.计次循环首 (取数组成员数 (数字数组), 计次2)
总和 = 总和 + 求次方 (到数值 (数字数组 [计次2]), 取文本长度 (到文本 (计次)))
处理事件 ()
.计次循环尾 ()
.如果真 (总和 = 计次)
加入成员 (水仙花数, 计次)
.如果真结束
处理事件 ()
.变量循环尾 ()
保存得到水仙花数的数组 = 水仙花数
返回 (取数组成员数 (水仙花数))
BAT 计算100~999之间的水仙花数
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1,1,9) do (
for /l %%b in (0,1,9) do (
for /l %%c in (0,1,9) do (
set /a ver1=%%a%%b%%c,ver2=%%a*%%a*%%a+%%b*%%b*%%b+%%c*%%c*%%c
if !ver1! == !ver2! echo !ver1!)))
pause>nul stack segment stack
dw 256 p (?)
stack ends
data segment
buf db 3 p (?)
data ends
code segment
assume cs:code,ds:data,ss:stack
fj proc near
push cx
push dx
push si
mov si,0
mov cx,10
fj1:
mov dx,0
div cx
mov buf[si],dl
inc si
or ax,ax
jnz fj1
mov ax,si
pop si
pop dx
pop cx
ret
fj endp
print proc near
push cx
push dx
mov dx,-1
push dx
mov cx,10
p1:
mov dx,0
div cx
push dx
or ax,ax
jnz p1
p2:
pop dx
cmp dx,-1
je p9
add dl,30h
mov ah,2
int 21h
jmp p2
p9:
mov dl,9
mov ah,2
int 21h
pop dx
pop cx
ret
print endp
start:
mov ax,data
mov ds,ax
mov bx,100
s0:
mov ax,bx
call fj
mov cx,ax
mov si,0
mov dx,0
s1:
mov al,buf[si]
mul buf[si]
mul buf[si]
add dx,ax
inc si
loop s1
cmp dx,bx
jne s2
mov ax,dx
call print
s2:
inc bx
cmp bx,1000
jb s0
mov ah,4ch
int 21h
code ends
end start 思想:枚举n位数字中0——9出现的次数,根据枚举的次数算出一个数,对比这个数中0——9出现的次数是否等于枚举的0——9出现的次数相等。如果相等,则该数是水仙花数。 #include<stdio.h>#include<string.h>#include<vector>#include<string>#include<iostream>#include<algorithm>usingnamespacestd;#defineDIGIT21//每次就只用改变这里,就可以算出不同位数的水仙花数了。如果要想算出所用的,这里就写最大,然后再在程序里加一层循环就是咯intCount[10];//Count用来保存枚举是0——9出现的次数,用以和算出来的值各数字出现次数进行对比。intcnt1,num1[10][DIGIT+1][DIGIT+1];//cnt1是符合条件的个数。num1用来保存0——9分别出现0——DIGIT次对应的答案charans[10][DIGIT+1];//保存符合条件的答案//这两个就是为了排序方便一点vector<string>v;strings[10];voiddeal(){intcnt[10];//保存算出来的数0——9出现的次数,用以和Count对比看是否满足条件intno[DIGIT+1];//算出来的数memset(no,0,sizeof(no));memset(cnt,0,sizeof(cnt));for(intk=1;k<10;k++){if(num1[k][Count[k]][DIGIT]!=0){return;}for(inti=0;i<DIGIT;i++){no[i]+=num1[k][Count[k]][i];if(no[i]>9){no[i+1]+=(no[i]/10);no[i]%=10;}}}if(no[DIGIT]!=0){return;}if(no[DIGIT-1]!=0){intflag=0;for(intj=0;j<DIGIT;j++){cnt[no[j]]++;}for(intj=0;j<10;j++){if(cnt[j]!=Count[j]){flag=1;break;}}if(!flag){ans[cnt1][DIGIT]='';for(intj=0,k=DIGIT-1;j<DIGIT;j++,k--){ans[cnt1][k]=no[j]+'0';}s[cnt1]=ans[cnt1];v.push_back(s[cnt1]);cnt1++;}}};intmain()//计算从0——9出现分别0——DIGIT次时的值{for(inti=1;i<10;i++){num1[i][1][0]=1;intindex=0;for(intj=1;j<=DIGIT;j++){for(intr=0;r<=index;r++){num1[i][1][r]*=i;}for(intr=0;r<=index;r++){if(num1[i][1][r]>9){num1[i][1][r+1]+=(num1[i][1][r]/10);num1[i][1][r]%=10;}}while(index<DIGIT-1&&num1[i][1][index+1]>0){index++;if(num1[i][1][index]>9){num1[i][1][index+1]+=(num1[i][1][index]/10);num1[i][1][index]%=10;}}}for(intj=2;j<=DIGIT;j++){for(intr=0;r<=DIGIT;r++){num1[i][j][r]=num1[i][1][r]*j;}for(intr=0;r<DIGIT;r++){if(num1[i][j][r]>9){num1[i][j][r+1]+=(num1[i][j][r]/10);num1[i][j][r]%=10;}}}}//枚举0——9分别出现0——DIGIT次的情况,0——9分别对应a——jfor(inta=0;a<=DIGIT;a++){Count[0]=a;for(intb=0;b<=DIGIT;b++){if(a+b>DIGIT)//保证出现的次数不大于DIGIT,下同{break;}Count[1]=b;for(intc=0;c<=DIGIT;c++){if(a+b+c>DIGIT){break;}Count[2]=c;for(intd=0;d<=DIGIT;d++){if(a+b+c+d>DIGIT){break;}Count[3]=d;for(inte=0;e<=DIGIT;e++){if(a+b+c+d+e>DIGIT){break;}Count[4]=e;for(intf=0;f<=DIGIT;f++){if(a+b+c+d+e+f>DIGIT){break;}Count[5]=f;for(intg=0;g<=DIGIT;g++){if(a+b+c+d+e+f+g>DIGIT){break;}Count[6]=g;for(inth=0;h<=DIGIT;h++){if(a+b+c+d+e+f+g+h>DIGIT){break;}Count[7]=h;for(inti=0;i<=DIGIT;i++){if(a+b+c+e+f+g+h+i>DIGIT){break;}Count[8]=i;intj=DIGIT-a-b-c-d-e-f-g-h-i;if(j<0){break;}Count[9]=j;deal();}}}}}}}}}//排序,将答案从小到大输出sort(v.begin(),v.end());for(inti=0;i<v.size();i++){cout<<v[i]<<endl;}return0;}

㈦ VB编程水仙花数

VB实现水仙花数的程序代码如下:

PrivateSubCommand_Click()

Fornum=100To999

a=numMod10

b=num10Mod10

c=num100

Ifa^3+b^3+c^3=numThenPrintnum

Nextnum

EndSub

实现具体步骤如下:

1.启动VB程序,新建一个标准的exe项目,如下图。



(7)web开发通过按钮求水仙花数扩展阅读:

C语言实现水仙花数的代码:

#include<stdio.h>

#include<stdlib.h>

voidmain()

{

inti,j,k,n;

printf("'waterflower'numberis:");

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(n==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf(" ");

}

注意事项:

VB编程的核心思想是组件编程。VB是最早引入组件编程的概念,然后被其他语言采用并成为标准,如vc++、Delphi、PowerBuilder等都采用了组件编程模型,并利用面向对象的编程技术,成为当今程序设计的发展方向之一。

VB编程,由于采用了组件技术,所以不必从底层开始窗体,控制设计,可以由工厂通过各种零件装配生产机器,通过Microsoft或第三方提供的组件,装配成所需的程序。与什么?VB是代码,它像胶水一样,把有限的代码和组件粘合在一起。结果是一个完整的应用程序。

VB有一个图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以很容易地使用s、RDO、ADO连接到数据库,或者很容易地创建活动的X控件,从而高效地生成类型安全的和面向对象的应用程序。

程序员可以使用VB提供的组件轻松快速地构建应用程序。VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。

VB使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组件的出现,程序员可以选用自己需要的扩展库。

㈧ C语言 函数多实例 求水仙花数

//求出所有水仙花数。
#include<stdio.h>
intmain()
{
intx,y,z;
for(x=1;x<=9;x++)
for(y=0;y<=9;y++)
for(z=0;z<=9;z++)
if((x*x*x+y*y*y+z*z*z)==(x*100+y*10+z))
printf("%d%d%d",x,y,z);
return0;
}

然后利用前面的输出:

#include<stdio.h>
intmain()
{
inta[4]={153,370,371,407},m,n,i;
boolflag;
while(scanf("%d%d",&m,&n)!=EOF)
{
flag=1;
for(i=0;i<4;i++)
{
if(a[i]>m&&a[i]<n)//这个地方我不知道是否可以是 if(a[i]>=m&&a[i]<=n),(不知道是开区间还是闭区间)
{
flag=0;
printf("%d",a[i]);
}
}
if(flag)
{
printf("no");
}
putchar(' ');
}
return0;
}

然后你的程序的问题起码是输出格式错误。因为你在输出一组数据的答案是都没有换行。

我们在主函数加入

freopen("test.3","w",stdout);

输入样例数据:


=====================================

楼主,不加freopen不容易看出输出格式错误。

特别是usaco这种,一个' '都是严格要求的。

㈨ vfp编程题~~~水仙花数的个数

#include<stdio.h>
main() -----有些C编译器,可能还要你在前面写上void
{ int a=100,b,c,d=0;
printf("100到999的水仙花数分别是:\n");
do
{ b=a;
a++; ----这个地方有问题,不能先改变这个a,得等与d比较完成后才能变
do
{ c=b%10;
d=d+c*c*c;--------d的初值应该放在内循环的外面,不能放在外循环的外面.
b=b/10;
}while(b>0);
if(d==a)
printf("%d ",a);
}while(a<=999);
}
改动后的程序如下:

#include<stdio.h>
void main() ---如果你的编译器没问题,可不加void
{ int a=100,b,c,d=0;
printf("100到999的水仙花数分别是:\n");
do
{ b=a;
d=0; -----d的初值
do
{ c=b%10;
d=d+c*c*c;
b=b/10;
}while(b>0);
if(d==a)
printf("%d ",a);
a++; ----a加一,再计算下一个
}while(a<=999);
}
水仙花数是指一个 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
……
……
以下为在各种编程语言中实现求取水仙花数的方法。
◆PHP “水仙花数”实现代码:
<?php
for($i=100;i$<1000;$i++)
{
$a = intval($i/100);
$b = intval($i/10)%10;
$c = $i%10;
if(pow($a,3)+pow($b,3))+pow($c,3) == $i)
{
echo $x.'</br>';
}
}
?>
◆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;
}
◆PASCAL 实现代码:
program shuixianhuashu;
var
a,b,c:integer;
begin
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if a*a*a+b*b*b+c*c*c=100*a+10*b+c then writeln(100*a+10*b+c);
end.
或:
program sxh;
var a,b,c,d:integer;
begin
for a:=100 to 999 do begin
b:=a mod 10;
c:=a mod 100 div 10;
d:=a div 100;
if b*b*b+c*c*c+d*d*d=a then writeln(a);
end;
end.
◆Visual Basic 的"水仙花数"实现代码:
Private Sub Form_Click()
Dim a, b, c As Integer 'a(个)b(十)c(百)
For a = 0 To 9
For b = 0 To 9
For c = 1 To 9
If a ^ 3 + b ^ 3 + c ^ 3 = a + 10 * b + 100 * c Then
MsgBox 100 * c + 10 * b + a
End If
Next c
Next b
Next a
End Sub
◆FORTRAN 的"水仙花数"实现代码:
WRITE(*,30)
DO 10 K=100,999
IA=K/100
IB=MOD(K,100)/10
IC=MOD(K,10)
IF(K.NE.IA**3+IB**3+IC**3) GOTO 10
WRITE(*,20)K, IA,IB,IC
10 CONTINUE
20 FORMAT(5X,4I4)
30 FORMAT(5X,18HN=I**3+J**3+K**3)
STOP
END
◆C++ 编译器上的水仙花数实现代码
#include<iostream>
using namespace std;
int main()
{
int q,w,e;
for(int a=100;a<1000;++a)
{
q=a/100;
w=(a-q*100)/10;
e=(a-q*100-w*10);
if(a==q*q*q+w*w*w+e*e*e)
cout<<a<<"是水仙花数"<<endl;}
}
#include <iostream.h> //求n位c++代码
#include <math.h>
void main()
{
int x,y,m;
int i;//i>=3
int sum;
int k;
cout<<"Enter i"<<endl;
cin>>i;
y=pow(10,i-1);
while(y<pow(10,i))
{ k=1;
sum=0;
x=y;
while(k<=i)
{m=x%10;sum+=(pow(m,i));x=(x-m)/10;k++;
}
if(sum==y) cout<<y<<endl;
y++;
}
}
◆pyhon 中实现的代码
for i in range(1,10):
for j in range(0,10):
for k in range(0,10):
if i*100+j*10+k==i*i*i+j*j*j+k*k*k:
print i*100+j*10+k,
◆Java 中实现的代码
public class shuixianhua
{
public static void main(String[] args){
for(int i=1; i<=9; i++)
for(int j=0; j<=9; j++)
for(int k=0; k<=9; k++)
if(i*i*i+j*j*j+k*k*k == 100*i+10*j+k)
System.out.print(i*100+j*10+k+" ");
}
}
◆C# ASP.NET 中的实现代码
for (int i = 100; i < 1000; i++)
{
int = 0;
int shi = 0;
int ge = 0;
int yushu = 0;
= i / 100;
yushu = i % 100;
shi = yushu / 10;
ge = yushu % 10;
if (i == * * + shi * shi * shi + ge * ge * ge)
{
Response.Write("水仙花数:" + i + "<br>");
}
}
◆javascript +html 实现水仙花可变位数的运算:
<!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>
◆asp 中实现的代码
<%
dim a,b,c,d,m,n,z
i=1
for i=100 to 999
a=mid(i,1,1)
b=mid(i,2,1)
c=mid(i,3,1)
d=a*a*a
m=b*b*b
n=c*c*c
z=d+m+n
if z=i then
response.write z & "<br>"
end if
next
%>