史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   編寫一個方法,求輸入的整數是否為完全數 (http://forum.slime.com.tw/thread168520.html)

psac 2006-02-18 05:20 AM

編寫一個方法,求輸入的整數是否為完全數
 
編寫一個方法,求輸入的整數是否為完全數。完全數是指其所有因子(包括1但不包括該數自身)的和等於該數自身的數。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;


public class wanzhengshu extends Applet
{
Label wanzhengshu;
TextField L_input,U_input;
int LowerLimit,UpperLimit;

public void init()
{wanzhengshu=new Label("請輸入你的數的範圍:");
L_input=new TextField(10);
U_input=new TextField(10);
add(wanzhengshu);
add(L_input);
add(U_input);
}
boolean iswanzhengshu(int i)
{ int m,e;
boolean f_i;
f_i=false;

for(m=0,e=1;e<=i/2;e++) /*計算a的因子,並將各因子之和m=a,則a是完全數輸出*/
{ if(i%e==0)
m+=e;
if(m==i)
f_i=true;
}
return f_i;
}
public void paint(Graphics g)
{int i,k=0,p=0;
boolean f_i;

for (i=2;i<UpperLimit;i++)
{if(UpperLimit%i!=0)
continue;
f_i=iswanzhengshu(i);
if(f_i)
{
g.drawString(Integer.toString(i),50+k*50,40+p*50);
if(k>10)
{p++;
k=0;
}else k=k+1;
}
}

k=0;p=0;
for (i=LowerLimit;i<UpperLimit;i++)
{ f_i=iswanzhengshu(i);
if(f_i)
{
g.drawString(Integer.toString(i),50+k*50,100+p*50);
if(k>10)
{p++;
k=0;
}else k=k+1;
}

}
}

public boolean action(Event e,Object o)
{
int temp;
if(e.target==U_input)
{LowerLimit=Integer.parseInt(L_input.getText());
UpperLimit=Integer.parseInt(U_input.getText());
if(LowerLimit>UpperLimit)
{ temp=LowerLimit;
LowerLimit=UpperLimit;
UpperLimit=temp;
}

repaint();
}
return true;
}
}


所有時間均為台北時間。現在的時間是 03:33 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1