Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <cinttypes>
- using namespace std;
- // Factoring_int.cpp
- // n julkinen avain joka on kahden alkuluvun tulo. Lasketaan alkuluvut p ja q
- // n,p ja q 64 bit unsigned integer type eli uint64_t <cinttypes>-määrittelystä
- // avainluku voi olla siis enintään 64-bittinen,
- // Juhani Kaukoranta 18.8.2019
- uint64_t n,p,q;
- clock_t t0, t1; // Time
- void GenerateFactors(uint64_t n)
- {
- uint64_t maks = floor(sqrt(n))+1;
- for( uint64_t i = 3;i <= maks; i+=2)
- {
- if(n % i == 0)
- {
- p = i;
- q = n / i;
- break; // löydetty kaksi alkulukua, poistutaan
- }
- }
- }
- int main()
- {
- cout << "Anna murrettava julkinen avain n,joka on alle 20 numeroinen," << endl;
- cout << "siis alle 64 bittinen,alle " << UINTMAX_MAX << " :" << endl;
- cin >> n;
- t0 = clock(); // Timer alku
- GenerateFactors(n); // lasketaan tekijät
- t1 = clock(); // timer loppu
- cout << "tekijät p = " << p << " q = " << q << endl;
- cout << "( Laskenta-aika oli: " << (double)(t1 - t0) / CLOCKS_PER_SEC << " sekuntia )" << endl;
- cout << "tekijöiden tulo = " << p * q << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement