編寫一個方法,求輸入的整數是否為完全數
編寫一個方法,求輸入的整數是否為完全數。完全數是指其所有因子(包括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;
}
}
|