當前位置:首頁 » 網頁前端 » 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
%>