//Autor: Artur Czekalski (Sator) www.epokaY.net/artur artur@epokaY.net //Generowanie liczb doskonalych import std.math; //sqrt import std.c.windows.windows; //GetTickCount import std.stdio; //writefln //--------------------------------------------------------------------------- int main(char[][] args) { int q, nS, SumaP, Liczba = 2; double s; writefln("Liczby doskonale:"); int czas; czas = GetTickCount(); while (++Liczba < 500000) {SumaP = 1; //suma podzielnikow; kazda liczba dzieli sie przez 1 s = sqrt(cast(double)Liczba); nS = cast(int)s; //zapamietuje s w int nS dla szybszego porownywania w petli q = 1; //zaczynam dzielenie od 2 while (++q <= nS) if (Liczba % q == 0) SumaP += q + Liczba/q; if (q == s) SumaP += q; if (SumaP == Liczba) writefln("%d", Liczba); //suma podzielnikow Liczby = Liczba } czas = GetTickCount() - czas; //--- writef("\nDigitalMars D v0.162: Czas=%d", czas); getchar(); return 0; }