Hi i with this perfect number program Please help

  • Thread starter Thread starter killerkhangg
  • Start date Start date
  • Tags Tags
    Hi Program
Click For Summary

Discussion Overview

The discussion revolves around a Java programming task to find perfect numbers, specifically the first six even perfect numbers, using Euclid's formula. Participants explore coding issues, mathematical concepts related to perfect numbers, and the implementation of algorithms in Java.

Discussion Character

  • Homework-related
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant describes the definition of a perfect number and provides an example, stating that a perfect number equals the sum of its divisors.
  • Another participant challenges the clarity of the original statement regarding Euclid's formula, suggesting a correction to the notation used.
  • A participant expresses confusion about the programming task and the correct implementation of the mathematical equation.
  • Several participants note that the program currently only finds the first four perfect numbers instead of the required six.
  • There is a suggestion to use the long data type instead of int for variable declarations to accommodate larger numbers.
  • Another participant proposes a method to calculate powers of two, indicating that this is necessary for the implementation of the perfect number algorithm.
  • One participant mentions missing class and needing clarification on the concepts discussed, including the implementation of the equations in code.

Areas of Agreement / Disagreement

Participants generally agree on the need to correct the program to find six perfect numbers and to use the appropriate data types. However, there is no consensus on the exact implementation details or the best approach to correct the code.

Contextual Notes

Participants express uncertainty about how to implement the mathematical equations in code, and there are unresolved questions regarding the logic of the current program structure.

killerkhangg
Messages
4
Reaction score
0
Perfect Number Program Java Methods

A perfect number is a positive integer equal to the sum of all its divisors (including 1 but excluding the number itself). For example:
28 = 1 + 2 + 4 + 7 + 14
According to Euclid, any solution to (2n-1) that results in a prime number will indicate that (2n-1)(2n-1) will be a perfect number. Thus, since 23-1 = 7, which is prime, 23-1(23-1) = 28, which is a perfect number. All even perfect numbers can be found in this fashion.

Write a program that will find the first n even perfect numbers, by testing the first formula to find primes, then using the second formula to find perfect numbers when the first reveals a prime answer. Use a long type rather than an int type to hold your responses. Find the first six perfect numbers.

This is what i got so far. please tell me what I am doing wrong

/**
* @(#)perfectnumber.java
*
*
* @author
* @version 1.00 2011/11/27
*/

import java.util.Scanner;
public class perfectnumber {

public static void main (String args[])
{
Scanner input = new Scanner(System.in);
int Number;
int Sum=0;
System.out.println("Place an interger in the range of 2 to 100");
Number=input.nextInt();
if(Number<2 || Number>100){
System.out.println("Number does not match the range!");
}
else
for(int i=2; i<Number; i++)
{
for(int j=1; j<i; j++){
if(i%j==0) //i mod j=0
Sum+=j; //part of the sum
}
if(Sum==i){
System.out.println("Perfect Number:" + i);
for(int factor=1; factor<1; factor++){
if(i%factor==0)
System.out.print(factor + "+");
}
System.out.println("="+ i);
}
Sum=0;
}
}

}
 
Last edited by a moderator:
Physics news on Phys.org


killerkhangg said:
According to Euclid, any solution to (2n-1) that results in a prime number will indicate that (2n-1)(2n-1) will be a perfect number. Thus, since 23-1 = 7, which is prime, 23-1(23-1) = 28, which is a perfect number.
That makes no sense at all. What you meant to say was
According to Euclid, any solution to (2n−1) that results in a prime number will indicate that (2n−1)(2n−1) will be a perfect number. Thus, since 23−1 = 7, which is prime, 23−1(23−1) = 28, which is a perfect number.​
There's a big difference between what you wrote and what I wrote. If you want help, you need to get the question right first.
 


sorry that's what my teacher gave me. i was really confuse on how to write a program putting that equation on
 
Last edited by a moderator:


killerkhangg said:

Homework Statement



A perfect number is a positive integer equal to the sum of all its divisors (including 1 but excluding the number itself). For example:
28 = 1 + 2 + 4 + 7 + 14
According to Euclid, any solution to (2n-1) that results in a prime number will indicate that (2n-1)(2n-1) will be a perfect number. Thus, since 23-1 = 7, which is prime, 23-1(23-1) = 28, which is a perfect number. All even perfect numbers can be found in this fashion.
Write a program that will find the first n even perfect numbers, by testing the first formula to find primes, then using the second formula to find perfect numbers when the first reveals a prime answer. Use a long type rather than an int type to hold your responses.[/color] Find the first six perfect numbers.


Homework Equations





The Attempt at a Solution


this is what i have so far, please tell me what i am doing wrong
When you post code here at Physics Forums, please put your code between [noparse]
Code:
 ...
[/noparse] tags. I have done that for you.

The problem description says to use the long type. Your variables are of type int.

Also, indenting your code makes it easier to read. The code you posted was not indented at all, and this makes it more difficult to see what is included in loops and so on.

Instead of asking us to tell you what you are doing wrong, tell us what the program is doing that is incorrect.
killerkhangg said:
Code:
/**
* @(#)perfectnumber.java
*
*
* @author
* @version 1.00 2011/11/27
*/

import java.util.Scanner;
public class perfectnumber {

  public static void main (String args[])
  {
    Scanner input = new Scanner(System.in);
    int Number;
    int Sum=0;
    System.out.println("Place an interger in the range of 2 to 100");
    Number=input.nextInt();
    if(Number<2 || Number>100){
      System.out.println("Number does not match the range!");
    }
    else
      for(int i=2; i<Number; i++)
      {
        for(int j=1; j<i; j++){
          if(i%j==0) //i mod j=0
           Sum+=j; //part of the sum
        }
        if(Sum==i){
          System.out.println("Perfect Number:" + i);
          for(int factor=1; factor<1; factor++){
            if(i%factor==0)
              System.out.print(factor + "+");
          }
          System.out.println("="+ i);
        }
        Sum=0;
      }
    }
}
 


This program that i wrote only find the first 4 perfect number and i am suppose to find the first 6 perfect number. And my teacher expect me to put those two equations above on the program which i really don't know how that works. Thank you very much. It would really help if you guys can tell me
 
Did you see what DrGreg wrote? Your program should calculate 2n - 1 for various values of n, check each to see if it's a prime. If so, then 2n - 1(2n - 1) will be a perfect number.

As I noted in my earlier post, you should be using longs, not ints.
 
I know i see what he wrote. I switch the variables to long but how would you put it into code. I'm guessing Math.squrt.2n-1? i missed class for 1 week due to intestine problems so i didn't get these notes. Sorry
 
killerkhangg said:
I know i see what he wrote. I switch the variables to long but how would you put it into code. I'm guessing Math.squrt.2n-1?
?
The name of the function is sqrt, but you wouldn't use it to calculate powers of 2. You can write a function that calculates powers of 2, as in the following:
Code:
long powerOfTwo(int exponent)
{
  long result = 1;
  for (int i = 0; i < exponent; i++)
  {
     result *= 2;
  }
  return result;
}


killerkhangg said:
i missed class for 1 week due to intestine problems so i didn't get these notes. Sorry
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
9
Views
4K
  • · Replies 37 ·
2
Replies
37
Views
5K
  • · Replies 32 ·
2
Replies
32
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 3 ·
Replies
3
Views
6K