Mam problem z licznikiem kroków pętli z metody IsPrime. Chcę zliczać kroki, jednak ta wartość nie jest przekazywana do metody Main.
using System;
using System.Diagnostics;
namespace Prime_Numbers
{
class Program
{
static void Main(string[] args)
{
Stopwatch czas = new Stopwatch();
Int64 licznikKrokow = 0;
int i, j, zakres, dokad;
int[] tablica = new int[10000];
//Console.WriteLine("Podaj gorny zakres, do ktorego chcesz odnalezc liczby pierwsze");
//zakres = int.Parse(Console.ReadLine());
zakres = 103;
dokad = (int)Math.Floor(Math.Sqrt(zakres));
//inicjowanie tablicy
for (i = 1; i <= zakres; i++) tablica[i] = i;
//algorytm - sito eratostenesa
for (i = 2; i <= Math.Sqrt(dokad); i++)
{
if (tablica[i] != 0)
{
j = i + i;
while (j <= zakres)
{
tablica[j] = 0;
j += i;
}
}
}
//wypisywanie wyniku
Console.WriteLine("Liczby pierwsze z zakresu od 1 do " + zakres);
for (i = 2; i <= zakres; i++)
if (tablica[i] != 0)
Console.WriteLine(i);
czas.Start();
bool wynik = IsPrime(103, ref licznikKrokow, tablica);
czas.Stop();
if (wynik)
{
Console.WriteLine("jest. Liczba kroków: " + licznikKrokow);
Console.WriteLine("czas: " + czas.Elapsed);
}
else
Console.WriteLine("nie jest");
}
static bool IsPrime(Int64 Num, ref Int64 licznikKrokow, int[] tablica)
{
licznikKrokow = 1;
if (Num < 2) return false;
else if (Num < 4) return true;
else if (Num % 2 == 0) return false;
else
for (int u = 3; u < tablica[u]; u += 1)
{
licznikKrokow++;
if (Num % u == 0) return false;
}
return true;
}
}
}