Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Tunnetaan Farayn jonon n
- // Jonon kaikkien jäsenten nimittäjät < = n
- // Tunnetaan annetun jonon jäsen a / b supistetussa muodossa
- // jossa a < b , a < n, b <= n ja syt(a,b) = 1
- // Tehtävänä etsiä Fareyn jonon jäsenen a/b seuraaja ja edeltäjä
- // C++ ohjelma Farey_edeltaja_seuraaja.cpp
- // Perustuu Matti K Sinisalon artikkeliin
- // http://www.geocities.ws/mattiksinisalo/farey2.pdf
- // C++ ohjelma Farey_edeltaja_seuraaja.cpp
- // Juhani Kaukoranta 14.9.2019
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <cinttypes>
- #include <iostream>
- using namespace std;
- long long int a0,b0,a,b,aold,bold,c,d,k,n;
- long double raja;
- int main()
- {
- cout << "Lasketaan annetun rationaaliluvun edeltäjä Fareyn jonossa" << endl;
- cout << "Anna rationaaliluvun osoittaja: " << endl;
- cin >> a0;
- cout << "Anna rationaaliluvun nimittäjä: " << endl;
- cin >> b0;
- cout << "a0/b0 = " << a0<<"/"<< b0 << endl;
- clock_t t0, t1; // Time
- n = b0;
- cout << "Fareyn rationaalilukujonon nimittäjä = " << n << endl;
- cout << "n = " << n << endl;
- cout << "Laskenta käynnissä, ensin tulee edeltäjä, sitten seuraaja..." << endl << endl;
- a = 0;
- b = 1;
- c = 1;
- d = n;
- t0 = clock(); // timer alku
- while (c <= n) {
- k = int((n+b)/d);
- aold = a;
- bold = b;
- a = c;
- b = d;
- c = k*c - aold;
- d = k*d - bold;
- if (b*a0-a*b0 == 1) {
- cout << endl;
- cout << "Rationaaliluku "<< a << "/" << b << " on rationaaliluvun " << a0 << "/"<< b0 << " edeltäjä" << endl << endl;
- break;
- }
- }
- a = 0;
- b = 1;
- c = 1;
- d = n;
- while (c <= n) {
- k = int((n+b)/d);
- aold = a;
- bold = b;
- a = c;
- b = d;
- c = k*c - aold;
- d = k*d - bold;
- if (a*b0 - b*a0 == 1) {
- cout << endl;
- cout << "Rationaaliluku "<< a << "/" << b << " on rationaaliluvun " << a0 << "/"<< b0 << " seuraaja" << endl<<endl;
- break;
- }
- }
- t1 = clock(); // timer loppu
- cout << "( Laskenta-aika oli: " << (double)(t1 - t0) / CLOCKS_PER_SEC << " sekuntia )" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment