Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5.  
  6. namespace PrimalNumbers
  7. {
  8. public class Program
  9. {
  10. const long howManyNumbersToGenerate = 1000000;
  11. const int biggestNumber = 1000000000;
  12. const string fileNameRandomNumbers = "Losowe.txt";
  13. const string fileNamePrimesNumbers = "Pierwsze.txt";
  14. static void Main(string[] args)
  15. {
  16. int decision = 0;
  17. do
  18. {
  19. Console.WriteLine("1. Generuj plik\n 2.Znajdź liczby pierwsze.\n3. Wyjście");
  20. if (int.TryParse(Console.ReadLine(), out decision))
  21. {
  22. switch (decision)
  23. {
  24. case 1:
  25. var listWithRandomNumbers = GenerateFileWithRandomNumbers();
  26. SaveRandomNumbersToFile(listWithRandomNumbers);
  27. break;
  28. case 2:
  29. var primes = CalculatePrimeNumbers();
  30. SavePrimesToFile(primes);
  31. break;
  32. }
  33. }
  34. } while (decision != 3);
  35.  
  36.  
  37. }
  38.  
  39. private static void SavePrimesToFile(List<int> primes)
  40. {
  41. SaveFile(fileNamePrimesNumbers, primes);
  42. }
  43.  
  44. private static void SaveFile(string filename, List<int> numbers)
  45. {
  46. Console.WriteLine("Podaj pełną ścieżkę do zapisania do pliku z rozszerzeniem .txt (naciśnij enter żeby utworzyć plik, tam gdzie jest plik wykonywalny.");
  47. try
  48. {
  49. var path = Console.ReadLine();
  50. if (string.IsNullOrEmpty(path))
  51. {
  52. var currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
  53. path = Path.Combine(currentDirectory, filename);
  54. File.WriteAllLines(path, numbers.Select(x => x.ToString()));
  55. }
  56. else
  57. {
  58. File.WriteAllLines(path, numbers.Select(x => x.ToString()));
  59. }
  60. }
  61. catch (Exception exception)
  62. {
  63. Console.WriteLine(exception.Message);
  64. }
  65. }
  66.  
  67. private static List<int> CalculatePrimeNumbers()
  68. {
  69. Console.WriteLine("Podaj pełną ścieżkę do odczytania do pliku z rozszerzeniem .txt (naciśnij enter żeby odczytaj plik, tam gdzie jest plik wykonywalny.");
  70. var primes = new List<int>();
  71. var numbers = LoadFromFile();
  72. foreach (var number in numbers)
  73. {
  74. if (CheckIfPrime(number))
  75. {
  76. primes.Add(number);
  77. }
  78. }
  79. return primes;
  80. }
  81.  
  82. private static List<int> LoadFromFile()
  83. {
  84. var currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
  85. var numbers = new List<int>();
  86. try
  87. {
  88. var data = File.ReadAllLines(Path.Combine(currentDirectory, fileNameRandomNumbers));
  89. numbers = data.Select(x => int.Parse(x)).ToList();
  90. }
  91. catch(Exception exception)
  92. {
  93. Console.WriteLine(exception.Message);
  94. }
  95. return numbers;
  96. }
  97.  
  98. private static void SaveRandomNumbersToFile(List<int> numbers)
  99. {
  100. SaveFile(fileNameRandomNumbers, numbers);
  101. Console.WriteLine("Podaj pełną ścieżkę do zapisania do pliku z rozszerzeniem .txt (naciśnij enter żeby utworzyć plik, tam gdzie jest plik wykonywalny.");
  102. }
  103.  
  104. private static List<int> GenerateFileWithRandomNumbers()
  105. {
  106. var numbers = new List<int>();
  107. var randomEngine = new Random();
  108. for (int i = 0; i < howManyNumbersToGenerate; i++)
  109. {
  110. var randomNumber = randomEngine.Next(0, biggestNumber);
  111. numbers.Add(randomNumber);
  112. }
  113. return numbers;
  114. }
  115.  
  116. private static bool CheckIfPrime(int number)
  117. {
  118.  
  119. if (number == 1) return false;
  120. if (number == 2) return true;
  121.  
  122. if (number % 2 == 0) return false;
  123.  
  124. var boundary = (int)Math.Floor(Math.Sqrt(number));
  125.  
  126. for (int i = 2; i < boundary; i++)
  127. {
  128. if (number % i == 0) return false;
  129. }
  130.  
  131. return true;
  132.  
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement