-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfibo_prime.cpp
More file actions
81 lines (73 loc) · 1.47 KB
/
fibo_prime.cpp
File metadata and controls
81 lines (73 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <tuple>
#include <cmath>
bool isPrime(int&);
int getNextPrime(int&);
std::tuple<int, int, int> getFibo(int &, int&);
bool isPrime(int &p)
{
int i = 0;
if(p <= 1)
return false;
else
for(i = 2; i <= sqrt(p); i++)
if(p % i == 0)
return false;
return true;
}
int getNextPrime(int &p)
{
for(p += 1; ; p++)
{
if(isPrime(p))
return p;
}
}
std::tuple<int, int, int> getFibo(int &f1, int &f2)
{
int f3 = f1 + f2;
f2 = f1;
f1 = f3;
return std::make_tuple(f1, f2, f3);
}
int main()
{
int n, fib_term, prime_term = 0;
int first_fib = 1;
int second_fib = 1;
int indie_prime = 1;
std::cout << "Please enter the apex range of your alternating sequence" << std::endl;
std::cin >> n;
for(int i = 0; i < n; i++)
{
if(i == 0 || i == 2)
{
first_fib = 1;
std::cout << first_fib << ",";
continue;
}
else if(i % 2 == 0 && i != n - 1)
{
std::tie(first_fib, second_fib, fib_term) = getFibo(first_fib, second_fib);
std::cout << fib_term << ",";
}
else if(i == n - 1 && i % 2 == 0)
{
std::tie(first_fib, second_fib, fib_term) = getFibo(first_fib, second_fib);
std::cout << fib_term;
}
else if(i == n - 1 && i % 2 != 0)
{
prime_term = getNextPrime(indie_prime);
indie_prime = prime_term;
std::cout << prime_term;
}
else if(i % 2 != 0 && i != n - 1)
{
prime_term = getNextPrime(indie_prime);
indie_prime = prime_term;
std::cout << prime_term << ",";
}
}
std::cout << "\n";
}