Advertisement
jukaukor

Factoring_int.cpp

Aug 18th, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cinttypes>
  4. using namespace std;
  5.  
  6. // Factoring_int.cpp
  7. // n julkinen avain joka on kahden alkuluvun tulo. Lasketaan alkuluvut p ja q
  8. // n,p ja q 64 bit unsigned integer type eli uint64_t <cinttypes>-määrittelystä
  9. // avainluku voi olla siis enintään 64-bittinen,
  10. // Juhani Kaukoranta 18.8.2019
  11.  
  12. uint64_t n,p,q;
  13.  
  14. clock_t t0, t1; // Time
  15.  
  16. void GenerateFactors(uint64_t n)
  17. {
  18. uint64_t maks = floor(sqrt(n))+1;
  19. for( uint64_t i = 3;i <= maks; i+=2)
  20. {
  21. if(n % i == 0)
  22. {
  23. p = i;
  24. q = n / i;
  25. break; // löydetty kaksi alkulukua, poistutaan
  26. }
  27. }
  28. }
  29.  
  30. int main()
  31. {
  32.  
  33. cout << "Anna murrettava julkinen avain n,joka on alle 20 numeroinen," << endl;
  34. cout << "siis alle 64 bittinen,alle " << UINTMAX_MAX << " :" << endl;
  35. cin >> n;
  36.  
  37. t0 = clock(); // Timer alku
  38. GenerateFactors(n); // lasketaan tekijät
  39. t1 = clock(); // timer loppu
  40. cout << "tekijät p = " << p << " q = " << q << endl;
  41. cout << "( Laskenta-aika oli: " << (double)(t1 - t0) / CLOCKS_PER_SEC << " sekuntia )" << endl;
  42. cout << "tekijöiden tulo = " << p * q << endl;
  43.  
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement