Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void GetPrime(mpz_t source)
- {
- mpz_t num,q,d,r,m,b,d1,p,z,a,p1,one;
- mpz_init_set_str(d,"2",10);
- mpz_init_set_str(one,"1",10);
- mpz_init_set_str(d1,"5",10);
- mpz_init(num);
- mpz_init(q);
- mpz_init(r);
- mpz_init(m);
- mpz_init(z);
- mpz_init_set_str(b,"0",10);
- unsigned long int res=0,res1=0;
- GenerateRandomNumber(num,512);
- mpz_init_set_str(num,"11",10);
- tryag:
- mpz_init_set_str(b,"0",10);
- printf("%s\n",mpz_get_str(NULL,10,num));
- mpz_add_ui(num,num,1);
- mpz_cdiv_qr(q,r,num,d);
- res=mpz_get_ui(r);
- mpz_cdiv_qr(q,r,num,d1);
- res1=mpz_get_ui(r);
- while(res==0 || res1==0)
- {
- mpz_add_ui(num,num,1);
- mpz_cdiv_qr(q,r,num,d1);
- res1=mpz_get_ui(r);
- mpz_cdiv_qr(q,r,num,d);
- res=mpz_get_ui(r);
- }
- mpz_init_set(p,num);
- mpz_init_set(p1,num);
- mpz_sub_ui(p1,p1,1);
- mpz_sub_ui(num,num,1);
- while(mpz_even_p(num))
- {
- mpz_cdiv_qr(q,r,num,d);
- mpz_add_ui(b,b,1);
- mpz_init_set(num,q);
- }
- mpz_init_set(m,q);
- mpz_init_set(num,p);
- printf("num %s\n",mpz_get_str(NULL,10,num));
- printf("q %s\n",mpz_get_str(NULL,10,q));
- printf("r %s\n",mpz_get_str(NULL,10,r));
- printf("m %s\n",mpz_get_str(NULL,10,m));
- printf("b %s\n",mpz_get_str(NULL,10,b));
- printf("p %s\n",mpz_get_str(NULL,10,p));
- printf("p1 %s\n",mpz_get_str(NULL,10,p1));
- char str[12];
- int v=0;
- while(v<10)
- {
- int j=1;
- unsigned long int b1=0;
- b1=mpz_get_ui(b);
- //sleep(1);
- unsigned int seed=0;
- srand(time(NULL));
- seed=rand();
- sprintf(str, "%d", seed);
- mpz_init_set_str(b,str,10);
- mpz_powm(z,a,m,p);
- int as,sd;
- printf("a %d\n",seed);
- printf("z %s\np %s\n",mpz_get_str(NULL,10,z),mpz_get_str(NULL,10,p));
- sd=mpz_cmp(z,p1); as=mpz_cmp(z,one);
- printf("%d zugup1 %d zugu1\n",sd,as);
- if((mpz_cmp(z,p1)==0 || mpz_cmp(z,one)==0))
- continue;
- else
- goto tryag;
- printf("**************\n");
- while(j<=b1)
- {
- if(mpz_cmp(z,one)==0 && j>0)
- goto tryag;
- j++;
- if(j<b1 && !(mpz_cmp(z,p1)==0))
- mpz_powm(z,z,d,p);
- if(!(mpz_cmp(z,p1)==0)&&j==b1)
- goto tryag;
- }
- v++;
- }
- mpz_init_set(source,p);
- mpz_clear(b);
- mpz_clear(m);
- mpz_clear(q);
- mpz_clear(d);
- mpz_clear(d);
- mpz_clear(r);
- mpz_clear(z);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement