1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Hi i need help with this perfect number program! Please help

  1. Nov 27, 2011 #1
    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 im 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: Nov 28, 2011
  2. jcsd
  3. Nov 27, 2011 #2

    DrGreg

    User Avatar
    Science Advisor
    Gold Member

    Re: Hi i need help with this perfect number program! PLZ help

    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.
     
  4. Nov 27, 2011 #3
    Re: Hi i need help with this perfect number program! PLZ help

    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: Nov 28, 2011
  5. Nov 28, 2011 #4

    Mark44

    Staff: Mentor

    Re: Perfect Number Program Java Methods! help plz

    When you post code here at Physics Forums, please put your code between [noparse]
    Code (Text):
     ...
    [/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.
     
  6. Nov 28, 2011 #5
    Re: Hi i need help with this perfect number program! PLZ help

    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
     
  7. Nov 28, 2011 #6

    Mark44

    Staff: Mentor

    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.
     
  8. Nov 28, 2011 #7
    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
     
  9. Nov 29, 2011 #8

    Mark44

    Staff: Mentor

    ???
    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 (Text):

    long powerOfTwo(int exponent)
    {
      long result = 1;
      for (int i = 0; i < exponent; i++)
      {
         result *= 2;
      }
      return result;
    }
     

     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Hi i need help with this perfect number program! Please help
Loading...