Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
З В І Т
до лабораторної роботи №3
з курсу: «Алгоритмічні основи криптології»
на тему: «Тестування чисел на простоту та побудова довгих простих чисел»
Варіант № 9
Львів – 2013р.
Мета роботи – вивчити основні програмні методи тестування чисел на простоту.
Завдання
Варіант
Алгоритм
Доповнення
9
Критерій Вільсона + Решето Ератосфена
Блок-схеми алгоритму програми
Main()
Vilson()
Resheto()
Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
a – одновимірний масив типу integer;
i, j, x, q - змінні типу integer, що використовуються для обчислення даними методами;
Vilson() - метод, що реалізує теорему Вільсона;
Resheto() - метод, який генерує прості числа до числа n методом Решета Ератосфена.
Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Resheto_Eratosfena_Teorema_Vilsona
{
class Program
{
static void Main(string[] args)
{
Teorema_Vilsona t = new Teorema_Vilsona();
t.Vilson();
Resheto_Eratosfena tt = new Resheto_Eratosfena();
tt.Resheto();
Console.ReadLine();
}
}
class Teorema_Vilsona
{
int i, x, q;
UInt64 p = 1;
public void Vilson()
{
p = 1;
Console.Write("X=");
x = Convert.ToInt16(Console.ReadLine());
for (i = 2; i < x; i++)
p *= Convert.ToUInt64(i);
// Console.WriteLine("p={0}", p);
if ((p % ((UInt64)x)) != 0)
{
Console.WriteLine("Число {0} просте", x);
}
else
{
Console.WriteLine("Число {0} складне", x);
}
Console.WriteLine("\n\t\tПеревiрити iнше число?\n\t\t1-так\t\t2-нi");
q = Convert.ToInt16(Console.ReadLine());
if (q == 1)
{
Vilson();
}
}
}
class Resheto_Eratosfena
{
int n, i, j,k;
int[] a;
public void Resheto()
{
Console.Write("Введiть число n=");
n = Convert.ToInt16(Console.ReadLine());
a = new int[n];
for (i = 2; i <= n; a[i - 2] = i, i++) ;
for (i = 0; i <= n - 2; i++)
{
if (a[i] != -1)
{
for (j = i+1; j <= n - 2; j++)
{
if (a[j] % a[i] == 0)
{ a[j] = -1; }
}
}
}
Console.WriteLine();
j = 1;
k = 1;
for (i = 0; i <= n - 2; i++)
{
if (j % (k * 10) == 0) { Console.WriteLine(); k++; }
if (a[i] != -1) { Console.Write(" {0}", a[i]); j++; }
}
}
}
}
Результати роботи програми