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;
}
}