No dobra mam do napisania programik w ktorym to maja zostac pokazane liczby doskonałe. Poniżej program określa czy podana liczba jest doskonałą czy też nie. Problem polega na tym aby był przedział od <1,n> i z tego przedziału pokazują się wszystkie liczby doskonałe. Kombinowałem aby wstawić przed petlą for jeszcze jedną pętle for (int n=1; n<w; n++) a za początkową zmienną którą określa użytkownik wstawić "w" ale kompilator podaje złe wyniki. Nie wiem dlaczego, z moje punktu widzenia przecież najpierw określa czy 1jest liczba doskonałą poźniej 2,3,4 itd. Jak to zapisać? Podpowie ktoś ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Zadanie_3._14petle
{
class Program
{
/* liczba N jest doskonala, gdy jest rowna sumie swych podzielnikow mniejszych od niej samej np=6 bo
* +1+2+3=6
* Szesc jest liczba doskonała. Napisz program znajdujacy liczby doskonałe w przedziale od <1,n>
* gdzie n podaje uzytkownika
* */
/*
* trzeba znalezc wszystkie dzielniki liczby n
* Nastepnie nalezy dodac wszystkie dzielniki oprocz najwiekszego
* Jezeli suma dodanych dzielnikow rowna sie liczbie N tzn. Ze jest to liczba doskonała
* */
static void Main(string[] args)
{
Console.WriteLine("Program znajdzie dla ciebie liczby doskonale!");
Console.WriteLine("Podaj przedział od <1,n>");
Console.WriteLine("Podaj N:");
int n;
int suma=0;
n = int.Parse(Console.ReadLine());
for (int i = 1; i < n; i++)
{
if (n % i == 0)
{
Console.WriteLine(i);
suma = suma + i;
if (suma == n)
{
Console.WriteLine("Liczba {0} jest liczbą doskonałą", n);
}
}
}
Console.ReadKey();
}
}
}