Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void fastPow_1variant(int num,int MOD,int m) {//изпълнение на задача 9
- cout << "Variant 1:" << endl;
- int c = 0;//променливав която ще извършваме степенуване на всяка итерация на цикъла
- int k = 0;
- int b = num;//запазваме стойноста на въведеното число
- int tmp = 0;//тук ще пазим стойноста на m % k
- for (int i = 2;i < MOD;i++) {
- if (i & 1)
- b = ((long long)b * b) % MOD;
- c = pow(num, i);
- cout << num << "^" << i << " =" << num << "*" << num << "^" << i - 1 << "mod(" << MOD << ")" << c % MOD << endl;
- if (c % MOD == 1) {
- k = i;
- tmp = m % k;
- int result = pow(num, tmp);
- cout << "The smallest integer,which a^k mod(n) = 1 ,k = " << " " << i << endl;
- cout << num << "^" << m << " = " << MOD << " " << num << "^" << m << "mod(" << k << ") =" << MOD << " " << num << "^" << tmp << "=" << MOD << " "<< result % MOD;
- break;
- }
- }
- // cout << num << "^" << m << " = " << MOD;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement