Идеальные числа от 1 до n - PullRequest
       39

Идеальные числа от 1 до n

0 голосов
/ 21 февраля 2011

Напишите алгоритм, который печатает идеальные числа от 1 до n.Чтобы определить, является ли число идеальным, сложите все факторы числа, которые меньше числа.Если сумма равна числу, это идеально.

import java.util.Scanner;

public class Assign_6 {

    public static void main(String[] args){

        int num,number,sum=0,factor;

        System.out.print("Enter Number");
        Scanner keyboard = new Scanner (System.in);

        number=keyboard.nextInt();

        for (num=1;num<number;num++){
            for(factor=1;factor<number;factor++){
                if(num%factor==0){
                    sum= sum+factor;
                }
                if(sum==num){
                    System.out.println(sum);
                }
                sum=0;
            }

        }
    }
}

Вывод: 24

Ничего не распечатывается.Не знаю, что не так.Куда я иду не так?Я могу использовать только операторы while, for и else-if.

Ответы [ 7 ]

4 голосов
/ 21 февраля 2011

Распечатайте сумму для каждого числа (а не только когда сумма == число), и вы сможете выяснить это.

(Два ключа: правильный отступ помогает быстро найти подходящие пары {}. И стоит дать описательные имена вашим переменным.)

1 голос
/ 17 сентября 2015

В вашем коде есть две проблемы:

  1. В следующем коде должно использоваться сравнение, меньшее или равное, в противном случае вы пропускаете n, только с 1 по (n-1)

    for (num = 1;num < number;num++){
    

    Это должен быть следующий код.

    for (num = 1;num <= number;num++){
    
  2. Следующий код находится внутри for(factor=1;...), но он должен быть внепетля.В противном случае вы фактически проверяете и очищаете сумму для каждого фактора.

    if(sum==num){System.out.println(sum);} sum=0;} 
    
1 голос
/ 21 февраля 2011

Проследите свою программу на бумаге. Проблема с вашей переменной sum.

0 голосов
/ 25 апреля 2017
import java.util.*;
    class PerfectNumber

{

public static void main(String[]args)
{
    System.out.println("Enter the number upto which you want to print the perfect number");
    Scanner scan=new Scanner(System.in);
    int n=scan.nextInt();
    for(int i=1;i<=n;i++)
    {
        int sum=0;
        for(int j=1;j<=i;j++)
        {
            if(i%j==0)
            sum=sum+j;
        }
        if(sum==(2*i))  //checks for perfect number
        System.out.println(i);
    }

    }
}
0 голосов
/ 29 августа 2016
public class PerfectNumber {
public static void main(String args [])
{

    perfectNumber(6,200);
}

static void perfectNumber(int num1, int num2){

    int i; int j; int sum=0;

     for (i=num1;i<=num2;i++){
            for(j=1;j<=i/2;j++){
                if(i%j==0){
                    sum= sum+j;
                }

            }
            if(sum==i){
                System.out.println("The perfect number between two numbers: "+sum);
            } 
            sum=0;
        }


    }

}

0 голосов
/ 27 ноября 2014

Попробуйте этот код, он вам поможет:

import java.util.Scanner;

public class Test
{
   public static void main (String[] args)
   {
       Scanner in = new Scanner(System.in);
       int n = in.nextInt();
       for(int j=1; j<n; j++)
       {
           int counter = 0;
           for (int i = 1; i < j; i++)         
           {              
               if(j%i ==0)
               {
                   counter = counter + i;
               }
           }
           if(counter == j)
               System.out.println(j);//here you can print j or counter
       }
   }
}
0 голосов
/ 23 февраля 2011

Когда вы начинаете программировать, очень легко запутать свои циклы, поскольку в этом домашнем задании у вас есть два цикла, и они делают разные вещи. Как подсказка, причина того, что ваша программа не работает, в том, что вы переместили материал из одного цикла for в другой.

Вы находитесь в правильном направлении, но убедитесь, что вы можете думать о них для петель отдельно. То есть, каково предназначение внутреннего цикла? Что он на самом деле делает? Какова цель внешнего цикла и что он на самом деле делает? Похоже, что в вашем внутреннем цикле вы пытаетесь суммировать факторы для числа. На самом деле это просто суммирование факторов или есть какие-то побочные эффекты / ошибки, которые вы упустили из виду?

...