Zadání:
Sestavte program, který určí, zda je zadané přirozené číslo prvočíslem.
Řešení:
Zadání vyřešíme použitím cyklu FOR. Zadané číslo postupně vydělíme všemi hodnotami od 2 do číslo-1. Pokud alespoň
při jednom dělení nastane nulový zbytek, nejedná se o prvočíslo a proto si vložíme do pomocné proměnné prvocislo
hodnotu false, která přepíše původní hodnotu true, kterou inicializujeme proměnnou prvocislo
na začátku programu.
Po všech děleních otestujeme, zda v proměnné prvocislo zůstala hodnota true
(zadané číslo je prvočíslem), nebo
byla přepsána hodnotou false (zadané číslo není prvočíslem).
Module Module1
Sub Main()
Dim c, i As Integer
Dim prvocislo As Boolean
Console.Write("Zadejte cislo: ")
c = Console.ReadLine
prvocislo = True
For i = 2 To c - 1
If c Mod i = 0 Then prvocislo = False
Next
If prvocislo Then
Console.WriteLine("Prvocislo")
Else
Console.WriteLine("Neni prvocislo")
End If
Console.ReadLine()
End Sub
End Module
program ke stažení
Pro učitele:
Příkaz For i = 2 to c - 1 lze pozměnit na For i = 2 to Math.Round(Math.Sqrt(c)), algoritmus proběhne výrazně rychleji.
Zadané číslo nemusíme testovat všemi čísly z intervali 2..číslo-1, lze nahradit horní mez odmocninou ze zadaného čísla. Jelikož jsou v cyklu FOR požadovány ordinální hodnoty, musíme ještě odmocninu ze zadaného čísla zaokrouhlit na celé číslo.