24.2.3.24010740. Za neki broj kažemo da je savršen ukoliko je jednak sumi svih svojih djelilaca. Na primjer, 28 je savršen broj: njegovi djelioci su 1, 2, 4, 7 i 14, a 1 + 2 + 4 + 7 + 14 = 28. Napisati program koji traži da se sa tastature unese cijeli brojevi a i b, a koji zatim ispisuje sve savršene brojeve u opsegu od a do b. Kao provjeru ispravnosti programa možete koristiti činjenicu da su jedini savršeni brojevi u opsegu od 1 do 100 brojevi 6 i 28.

Opis rješenja:

Listing programa:


package zadatak;
import java.util.Scanner;
public class zadatak74 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Unesi brojeve a i b");
		int a = input.nextInt();
		int b = input.nextInt();
		while (b < a) {
			System.out.print("b mora biti vece od a!");
			a = input.nextInt();
			b = input.nextInt();

		}

		int s = 1;
		boolean t = true;

		for (int i = a + 1; i < b; i++) {
			s = 1;
			for (int j = 2; j < i; j++)

				if (i % j == 0)
					s = s + j;
			if (s == i) {
				System.out.print(i + " ");
				t = false;
			}
		}
		System.out.println();

		if (t)
			System.out.println("Nema prostih brojeva.");
	}
}

Ispis na ekranu:

Riješeni zadaci 2    Index