Witam. C# to mój pierwszy język programowania. Uczę się od 2tygodni z tej książki: http://c-sharp.ue.katowice.pl/ksiazka/c_sharp_wer1_1.pdf nie wiem czy jest dobrym źródłem. Mam takowe zadanie w książce:
Napisz program, który podaje, ile jest liczb pierwszych w tablicy 100 elementowej typu int.
Napisałem program za pomocą Sita Eratostenesa wzorując się na przykładzie z sieci.
Wstyd się przyznać ale mam problem z odwoływaniem się do wartości tablicy, tworzeniem pętel .
Proszę o omówienie na przykładzie danej liczby np "10" działanie programu. Napiszę komentarze czego nie rozumiem i proszę się odnieśc do tego. Będę bardzo wdzięczny za pomoc.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Zad_4._4
{
class Program
{
static void Main(string[] args)
{
//deklaruj zmienne
int i, j, zakres, pierwiastek;
//twórz tablice
int[] tab=new int[100];
//wczytaj zakres zmiennych
Console.WriteLine("Podaj gorny zakres, do ktorego chcesz odnalezc liczby pierwsze");
zakres = int.Parse(Console.ReadLine());
pierwiastek= (int)Math.Floor(Math.Sqrt(zakres));
//inicjuj tablice
for (i = 1; i <= zakres; i++)
tab[i] = i;
//algorytm - Sito Eratostenesa
for (i= 2; i<= pierwiastek; i++) // Pętla bierze sobię liczbę np "10' i sprawdza czy jest pierwsza. Tylko nie rozumiem jak to działa skoro pierwiastek z 10 wynosi około 3.2.
{
{
j = i + i; // Nie rozumiem w jaki sposób ma to wpływać na program
while (j <= zakres)
{
tab[j] = 0; // wartość początkowa indeksów czy elementów?? tablicy ma być przypisana do zera?
j += i; // również nie wiem
}
}
}
//wypisz wynik
Console.WriteLine("Liczby pierwsze z zakresu od 1 do " + zakres);
for (i = 2; i <= zakres; i++)
if (tab[i] != 0) // jak usunę tą linie to program wyświetla wszystkie liczby po koleji. Nie wiem dlaczego skoro wszystkie elementy tablicy są różne od zera. Chyba, że chodzi o pierwszy index o wartości 0? (liczba 1)
Console.WriteLine(i + ", ");
Console.ReadKey();
}
}
}