Advertisement
tadejpetric

lucas primality search

Mar 27th, 2016
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. //find xth lucas number
  2. //1, 3, 4, 7, 11, 18, 29 (same as fibonacci, but with 1 and 3 instead 1 and 1)
  3. #include <iostream> // cin cout
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     bool check = true, prime; //za loop; za prime test
  10.     unsigned long long int select; //iskano mesto v lucas sequence
  11.     do{
  12.         unsigned long long int first = 1, second = 3, temp; //seed za vrsto
  13.         cout << "Vpisi zeljeno mesto: ";
  14.         cin >> select; //vpises zeljeno mesto v lucas sequence
  15.  
  16.         for (int i = 0; i < select-2; i++) //isto kot pri fibonacci
  17.         {
  18.             temp = first + second;
  19.             first = second;
  20.             second = temp; //second iskana št
  21.         }
  22.         cout << "Na mestu " << select << " se nahaja stevilo " << second << "." << endl; //izpis
  23.         cout << "To stevilo minus 1 (n-1) je " << second  - 1 << "." << endl; //začetek prime testa
  24.         if ((second - 1) % select == 0) //n je MOGOČE praštevilo če je nto mesto lucas sequenca (call that number p) - 1 deljivo z n
  25.             prime = true;
  26.         else
  27.             prime = false;
  28.         if (prime == true)
  29.             cout << "Ker je " << second - 1 << " (" << second << " -1) deljivo z " << select << " je to stevilo mogoce prastevilo" << endl; // izpis če je myb praštevilo
  30.         else
  31.             cout << "Ker ni " << second - 1 << " (" << second << " -1) deljivo z " << select << " to stevilo zagotovo ni prastevilo" << endl; // izpis če ni
  32.         cout << "1 za ponovitev, 0 za konec: ";
  33.         cin >> check;
  34.     } while (check == true);
  35.     return 0; //note: int second overflowa pri okoli select = 90 (brez opozorila). 89 zadnje praštevilo ki ga lahko najde (vsaj rezultat tam pravilen), pri 97 rezultat že napačen
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement