Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace DH
  8. {
  9. class Program
  10. {
  11.  
  12.  
  13. static void Main(string[] args)
  14. {
  15. Console.Write("Set prime limit: ");
  16. int limit = Convert.ToInt32(Console.ReadLine());
  17. int p = GenerateP(limit);
  18. int g = GenerateG(limit,p);
  19.  
  20.  
  21. Console.WriteLine("P: " + p);
  22.  
  23. Console.WriteLine("G: " + g);
  24.  
  25.  
  26. Console.ReadKey();
  27.  
  28. }
  29.  
  30.  
  31. static int GenerateP(int limit)
  32. {
  33. int[] primeArray = new int[limit];
  34. int counter = 0;
  35. for (int i = 0; i < limit; i++)
  36. {
  37. if (IsPrime(i))
  38. {
  39. primeArray[counter] = i;
  40. counter++;
  41. }
  42. }
  43.  
  44. Random rnd = new Random();
  45. int random = rnd.Next(0, counter);
  46. return primeArray[random];
  47. }
  48.  
  49. static int GenerateG(int limit, int p)
  50. {
  51. var temp = GetPrimeArray(limit);
  52.  
  53. for (int i = 0; i < temp.Length; i++)
  54. Console.WriteLine(temp[i]);
  55.  
  56.  
  57.  
  58.  
  59. Random rnd = new Random();
  60. int random = rnd.Next(0, temp.Length);
  61.  
  62. while (temp[random] >= p)
  63. {
  64. random = rnd.Next(0, temp.Length );
  65. }
  66.  
  67. return temp[random];
  68.  
  69. }
  70.  
  71. static int[] GetPrimeArray(int limit)
  72. {
  73. int[] primeArray = new int[limit];
  74. int counter = 0;
  75.  
  76. for (int i = 2; i < limit; i++)
  77. {
  78. if (IsPrime(i))
  79. {
  80. primeArray[counter] = i;
  81. counter++;
  82.  
  83. }
  84. }
  85.  
  86. return primeArray.Take(counter).ToArray();
  87.  
  88. }
  89.  
  90. static bool IsPrime(int number)
  91. {
  92.  
  93. if (number == 1) return false;
  94. if (number == 2) return true;
  95.  
  96. for (int i = 2; i <= Math.Ceiling(Math.Sqrt(number)); ++i)
  97. {
  98. if (number % i == 0) return false;
  99. }
  100.  
  101. return true;
  102.  
  103. }
  104.  
  105.  
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement