java完数
⑴ java求完数
完全数必以6或者 28结尾,而且除了6各数位之和相加直到变成个位数则一定是1,也就是说一定是9的倍数+1,通过这些性质可以极大缩小遍历范围,降低时间复杂度
⑵ java求100以内完数。
for(intm=1;m<=100;m++)//从1开始取值
{
ints=0;//定义整型S
for(inti=1;i<m;i++)//
if(m%i==0)//如果M除以i整除
s=s+i;
if(s==m){//如果S=M
System.out.print(s+"");//输出内完容数
}
}
⑶ java求完数 且输出其因子
先要将这个数的每个因子存储到一个数组
然后,判断这个数是不是完数
如果是,则按格式输出就可以了!
⑷ java 完数程序
classforDemo2
{
publicstaticvoidmain(String[]args)
{
内intsum;
inti=2;
while(i!=1001)
{
sum=0;//每次循环sum重新赋容值为0
for(intj=1;j<i;j++)
{
if(i%j==0)sum+=j;
}
if(i==sum)System.out.println(i+"");
i++;
}
}
}
⑸ Java 完数的代码
class PerfectNumber {
public static void main(String[] args) {
for (int i = 2; i <= 1000; i++)
if (isPerfectNumber(i))
System.out.println(i);
}
static boolean isPerfectNumber(int i) {
int sumof = 0;
int j;
for (j = 1; j <= i / 2; j++) {
if (i % j == 0) {
sumof += j;
}
}
return i == sumof;
}
}
⑹ java判断完数
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Prefectnumber {
private JFrame frame;
private JPanel panel,bp;
private JTextField tField;
private JButton button;
private JTextArea tArea;
public Prefectnumber() {
frame = new JFrame();
panel = new JPanel();
bp = new JPanel();
tField = new JTextField();
button = new JButton("确定");
tArea = new JTextArea(5,40);
init();
addActionHandle();
}
private void init() {
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
panel.add(tField);
bp.add(button);
panel.add(bp);
panel.add(tArea);
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private void addActionHandle() {
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String temp = tField.getText();
if (temp.equals("")||temp==null) {
tArea.setText("请输入你要判断的数字!");
return;
}else {
int t;
try {
t = Integer.parseInt(temp);
} catch (NumberFormatException e1) {
tArea.setText("你输入的数字不合法!请输入合法数字");
return;
}
String[] al= isPrefectnumber(t);
if (al.length!=0) {
StringBuffer sb = new StringBuffer();
sb.append(t+"是完数,其因子为");
for (int i = 0; i <al.length ; i++) {
sb.append(","+al[i]);
}
tArea.setText(sb.toString());
} else {
tArea.setText(t+"不是完数");
}
}
}
});
}
private String[] isPrefectnumber(int n){
int sum=0;
StringBuffer sBuffer = new StringBuffer();;
for (int i = 1; i < n; i++) {
if (n % i == 0){
sum += i;
sBuffer.append(","+i);
}
}
if (sum==n) {
return sBuffer.toString().replaceFirst(",", "").split(",");
}else {
return new String[0];
}
}
public static void main(String arg[]) {
new Prefectnumber();
}
}
前面遇到过这样的问题,你拿去跑跑,前面用的ArrayList他说不明白,现在改用StringBuffer和String数组了,这下能明白了吧
⑺ java完数
是不是你的变量sum
报错???
你应该得给你的变量sum赋值初始值,因为你后面的if里面进行判断啦,如果不赋值的话,sum没有初始值,怎么进行判断?
⑻ java语言判断一个整数是否为完数
import java.util.Scanner;
public class Test1 {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
if(isFullNum(scanner.nextInt())) {
System.out.println("是完数");
}
else {
System.out.println("不是完数");
}
}
//判断一个数字是不是完数,是的话返回true
public static boolean isFullNum(int num) {
int sum = 0;
for(int i = 1;i <= num/2;i++) {
if(num%i == 0)
sum+=i;
}
return sum == num;
}
}
⑼ java完数的代码
public static void main(String[] args) {
int a, b, sum;
sum = 0;
for (a = 1; a <= 1000; a++) {
for (b = 1; b < a; b++) {
if (a % b == 0) {
// 此处用sum去累加了 如 sum =1 ,b =2, 则sum = 1 + 2;
sum = sum + b;
}
}
if (sum == a) {
System.out.println(sum);
}
// 如果这里不重置清零,则上方内sum = sum + b; 这行语句会将上一次值累加上去,就不是我容们想要的值了
sum = 0;
}
}