1. Prvocisla

1.2. C#

Načtení počtu prvočísel v řadě do celočíselné proměnné pocetCisel ve statické hlavní metodě je realizováno pomocí příkazu (metody s výstupními parametry) TryParse - viz Kód 1. Pokud uživatel zadal počet menší než 0, je vypsána chybová hláška a hlavní metoda je ukončena pomocí příkazu return (tzn. ukončení programu). Je také zapotřebí inicializovat počet nalezených čísel n, který je na začátku nulový. Dále musí být inicializována hodnota v proměnné i (čítač), do které budeme ukládat testované číslo, které může být prvočíslem, nebo nikoliv. 

V cyklu while probíhá testování, zda již byl vypsán požadovaný počet prvočísel. Testování, zda je aktuální číslo prvočíslem, probíhá pomocí volání metody s logickým návratem Prvocislo. Této metodě je předáno aktuální testované číslo uložené ve skutečném parametru i. Pokud návrat metody je true, je testované číslo prvočíslem a musí být zvýšen počet nalezených prvočísel o hodnotu 1 (inkrementace n++;). Toto číslo musí také být konvertováno na číslici a následně zapsáno do řady již nalezených čísel, která jsou zapsána v proměnné vystup. Jednotlivé číslice jsou od sebe odděleny čárkou, proto se uvnitř těla cyklu nalézá ještě další podmínka testující, zda se nenacházíme u posledního prvočísla v řadě, u kterého se již žádná čárka připojovat nebude. Na konci iterace je zvýšeno testované číslo o hodnotu 1 (inkrementace i++;)

V hlavní statické metodě je na konci těla metody vypsána výsledná řada prvočísel včetně úvodního textu. 

static void Main(string[] args)
{
    /* Deklarace: 'pocetCisel' ... počet prvočísel, která mají být vypsána; 
     * 'n' ... počet nalezených prvočísel; 'i' ... testované číslo 
     * na prvočíslo (čítač); 'vystup' ... textová proměnná, do které 
     * budeme ukládat výsledek */
    int pocetCisel, n, i;
    string vystup;
 
    // Inicializace - počet nalezených čísel
    n = 0;
    // Inicializace - číslo testované na prvočíslo
    i = 2;
    vystup = "";
 
    Console.WriteLine("Výpis prvních n prvočísel");
 
    Console.Write("Zadejte počet vypsaných prvočísel: ");
    // Načtení počtu vypisovaných prvočísel
    int.TryParse(Console.ReadLine(), out pocetCisel);
    // Test na zadání záporného počtu vypísovaných prvočísel
    if (pocetCisel < 0)
    {
        Console.WriteLine("Zadejte platnou kladnou celočíselnou hodnotu pro počet čísel.");
        // Ukončení metody (programu)
        return;
    }
 
    // Cyklus - pokud platí, že je vypsáno méně než specifikovaný počet prvočísel
    while (n < pocetCisel)
    {
 
        // Pokud návrat zavolané funkce testu na prvočíslo u testovaného čísla je pravda
        if (Prvocislo(i))
        {
 
            // Zvýšeni hodnoty poctu nalezených prvočísel o 1
            n++;
 
            // Připojení číslice (testovaného čísla konvertovaného na text) k předchozím
            vystup += i.ToString();
 
            // Pokud není vypsán požadovaný počet prvočísel
            if (n < pocetCisel)
            {
 
                // Připoj za číslo čárku
                vystup += ", ";
            }
        }
 
        // Nové testované číslo, které je o 1 vyšší než předchozí
        i++;
    }
 
    // Výpis požadovaného počtu prvočísel
    Console.WriteLine("Prvočísla: " + vystup);
 
    // Čekání na stisk klávesy -> ukončení programu
    Console.ReadKey();
}

Kód 1: Program Prvocisla - deklarace hlavní statické metody Main 

V deklaraci metody Prvocislo s logickým návratem (datový typ bool) vidíme, že ještě před testováním formálního parametru n je provedena inicializace u obou proměnných - na začátku prohlásíme testované číslo prvočíslem a prvním dělitelem je číslo 2 - viz Kód 2. V cyklu while je provedeno testování na dělení beze zbytku, které bylo popsáno již v předchozí kapitole. Pokud bylo číslo dělitelné beze zbytku alespoň nějakým dělitelem, toto číslo není prvočíslem (b = false;).

// Metoda s návratem - návrat, zda je předané číslo prvočíslo (true), nebo nikoliv (false)
static bool Prvocislo(int n)
{
    /* Deklarace (inicializace): 'b' ... informace, zda je testované (předané) číslo 
     * prvočíslem (true - je prvočíslem); 'i' ... dělitel (čítač) */
    bool b = true;
    int i = 2;
 
    // Cyklus - dokud platí, že testované číslo je prvočíslo a čítač je menší než testované číslo
    while (b == true && i < n)
    {
        // Pokud testované číslo je dělitelné beze zbytku
        if (n % i == 0)
        {
            // Testované číslo není prvočíslo
            b = false;
        }
 
        // Inkrementace
        i++;
    }
 
    // Výstupem metody je informace, která je uložena v logické proměnné
    return b;
}

Kód 2: Deklarace statické metody s logickým návratem s názvem Prvocislo