Last active
March 20, 2021 20:57
-
-
Save oguzhanvarsak/71838cd3b3b928f1968b017a3b9ef39c to your computer and use it in GitHub Desktop.
Write code to find the first prime fibonacci number larger than a given minimum, Use your code to compute the smallest prime fibonacci number
greater than 227,000 (X) and find the sum of prime divisors of X + 1.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// main.m | |
// | |
// | |
// Created by Oğuzhan Varsak on 29.12.2020. | |
// | |
#import <Foundation/Foundation.h> | |
int Fibb(int number); | |
void findGreatest(void); | |
void Divisors(void); | |
int closestFib = 0; | |
int nums[2]; | |
int X = 227000; | |
int sum=0; | |
int main(int argc, const char * argv[]) { | |
@autoreleasepool { | |
int number = 0; | |
printf("Number: "); | |
scanf("%d", &number); // 1- Girilen değer hafızaya kaydediliyor. | |
Fibb(number); // 2- Girilen değer ile Fibonacci fonksiyonu çağırılıyor. | |
findGreatest(); // * Adım 8 | |
NSLog(@"First prime fibonacci number larger than %d is %d",number,closestFib); | |
Fibb(X); // 9- 227.000 sayısından büyük ilk fibonacci sayısı bulunuyor. | |
findGreatest(); // * Adım 8 | |
NSLog(@"First prime fibonacci number greater than %d is %d",X,closestFib); | |
closestFib += 1; // 10- 227.000'den sonraki ilk büyük fibonacci sayısına 1 ekleniyor. | |
Divisors(); // 11- Bulunan sayının çarpanları toplamını hesaplayacak fonksiyon çağırılıyor. | |
} | |
return 0; | |
} | |
int Fibb(int number) { | |
int currentFib = 0; | |
int index = 1; | |
nums[0]=0; // 3- Fibonacci dizisinin ilk değerleri olan | |
nums[1]=1; // 0 ve 1 değerleri başlangıç için diziye ekleniyor. | |
while (currentFib < number) { // 4- Girilen değerden sonraki ilk fibonacci sayısını bulmak istediğimizden, fonksiyon 0'dan girilen değere kadar çalışacak. | |
index = (index+1)%2; // 5- Sıradaki fibonacci sayısının, saklanacağı dizinin hangi sırasına ekleneceğini belirleniyor. | |
nums[index] = nums[0]+nums[1]; // 6- Sıradaki fibonacci sayısı bulunuyor. | |
currentFib = nums[index]; // 7- Bulunan fibonacci sayısı sıradaki döngü için currentFib değişkenine atanıyor. | |
//NSLog(@"Fibb %d",currentFib); // - Fibonacci sayılarını konsola yazdırır. | |
} | |
return closestFib; | |
} | |
void findGreatest() { | |
if (nums[0] > nums[1]) { // 8- Dizi içerisindeki en büyük fibonacci sayısı, girilen değerden sonraki ilk sayı. | |
closestFib = nums[0]; // Bu kontrol ile büyük olan sayı closestFib değişkenine atanıyor. | |
} else { | |
closestFib = nums[1]; | |
} | |
} | |
void Divisors() { | |
bool dividedByTwo = FALSE; | |
while (closestFib % 2 == 0) { // 12- Sayının 2 bölenleri bulunuyor. | |
closestFib = closestFib / 2; | |
dividedByTwo = TRUE; // 13- Eğer sayının 2 böleni varsa boolean değeri TRUE olarak değiştiriliyor. | |
} | |
if (dividedByTwo) { // 14- Boolean değeri TRUE olarak değiştirildiyse, seçilen sayı 2 ile bölünebilir anlamına geliyor. | |
sum += 2; // Bu işlem sayede sayının birden fazla 2 böleni olsa da bunlar toplama katılmamış oluyor. | |
} | |
for (int i = 3;i <= sqrt(closestFib);i+=2) { | |
while (closestFib % i == 0) { | |
sum += i; | |
closestFib = closestFib/i; | |
} | |
} | |
if (closestFib > 2) { | |
sum += closestFib; | |
} | |
NSLog(@"Sum of prime divisors of X+1 %d", sum); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment