Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. void GetPrime(mpz_t source)
  2. {
  3. mpz_t num,q,d,r,m,b,d1,p,z,a,p1,one;
  4.  
  5.  
  6. mpz_init_set_str(d,"2",10);
  7. mpz_init_set_str(one,"1",10);
  8. mpz_init_set_str(d1,"5",10);
  9. mpz_init(num);
  10. mpz_init(q);
  11. mpz_init(r);
  12. mpz_init(m);
  13. mpz_init(z);
  14. mpz_init_set_str(b,"0",10);
  15. unsigned long int res=0,res1=0;
  16.  
  17.  
  18. GenerateRandomNumber(num,512);
  19. mpz_init_set_str(num,"11",10);
  20. tryag:
  21. mpz_init_set_str(b,"0",10);
  22.  
  23. printf("%s\n",mpz_get_str(NULL,10,num));
  24.  
  25. mpz_add_ui(num,num,1);
  26.  
  27.  
  28. mpz_cdiv_qr(q,r,num,d);
  29. res=mpz_get_ui(r);
  30. mpz_cdiv_qr(q,r,num,d1);
  31. res1=mpz_get_ui(r);
  32.  
  33.  
  34. while(res==0 || res1==0)
  35. {
  36.  
  37. mpz_add_ui(num,num,1);
  38.  
  39.  
  40. mpz_cdiv_qr(q,r,num,d1);
  41. res1=mpz_get_ui(r);
  42.  
  43. mpz_cdiv_qr(q,r,num,d);
  44. res=mpz_get_ui(r);
  45.  
  46. }
  47. mpz_init_set(p,num);
  48. mpz_init_set(p1,num);
  49. mpz_sub_ui(p1,p1,1);
  50.  
  51. mpz_sub_ui(num,num,1);
  52.  
  53. while(mpz_even_p(num))
  54. {
  55.  
  56. mpz_cdiv_qr(q,r,num,d);
  57. mpz_add_ui(b,b,1);
  58. mpz_init_set(num,q);
  59. }
  60.  
  61. mpz_init_set(m,q);
  62. mpz_init_set(num,p);
  63.  
  64.  
  65. printf("num %s\n",mpz_get_str(NULL,10,num));
  66. printf("q %s\n",mpz_get_str(NULL,10,q));
  67. printf("r %s\n",mpz_get_str(NULL,10,r));
  68. printf("m %s\n",mpz_get_str(NULL,10,m));
  69. printf("b %s\n",mpz_get_str(NULL,10,b));
  70. printf("p %s\n",mpz_get_str(NULL,10,p));
  71. printf("p1 %s\n",mpz_get_str(NULL,10,p1));
  72.  
  73.  
  74.  
  75.  
  76. char str[12];
  77. int v=0;
  78. while(v<10)
  79. {
  80. int j=1;
  81. unsigned long int b1=0;
  82. b1=mpz_get_ui(b);
  83.  
  84. //sleep(1);
  85.  
  86. unsigned int seed=0;
  87. srand(time(NULL));
  88. seed=rand();
  89. sprintf(str, "%d", seed);
  90. mpz_init_set_str(b,str,10);
  91. mpz_powm(z,a,m,p);
  92. int as,sd;
  93.  
  94. printf("a %d\n",seed);
  95. printf("z %s\np %s\n",mpz_get_str(NULL,10,z),mpz_get_str(NULL,10,p));
  96. sd=mpz_cmp(z,p1); as=mpz_cmp(z,one);
  97. printf("%d zugup1   %d zugu1\n",sd,as);
  98.  
  99. if((mpz_cmp(z,p1)==0 || mpz_cmp(z,one)==0))
  100. continue;
  101. else
  102. goto tryag;
  103. printf("**************\n");
  104. while(j<=b1)
  105. {
  106.  
  107.  
  108.  
  109. if(mpz_cmp(z,one)==0 && j>0)
  110. goto tryag;
  111.  
  112.  
  113.  
  114. j++;
  115. if(j<b1 && !(mpz_cmp(z,p1)==0))
  116. mpz_powm(z,z,d,p);
  117.  
  118.  
  119. if(!(mpz_cmp(z,p1)==0)&&j==b1)
  120. goto tryag;
  121.  
  122.  
  123.  
  124.  
  125. }
  126.  
  127. v++;
  128.  
  129. }
  130.  
  131.  
  132.  
  133. mpz_init_set(source,p);
  134. mpz_clear(b);
  135. mpz_clear(m);
  136. mpz_clear(q);
  137. mpz_clear(d);
  138. mpz_clear(d);
  139. mpz_clear(r);
  140. mpz_clear(z);
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement