Wyświetlanie wartości ujemnych

0

Dlaczego program wyświetla wartości ujemne zamiast dodatnich? Zostaje przekroczony maksymalny zakres w pamięci? Czy unsigned long long int nie wystarcza?

 
#include <stdlib.h>
#include <stdio.h>

int main() {
	int i; 
	unsigned long long int fibionnaci[80];
	
	for(i = 0; i < 80; i++) {
		if(i == 0 || i == 1){
			fibionnaci[i] = i;
		} else {
			fibionnaci[i] = fibionnaci[i - 1] + fibionnaci[i - 2];
		}
	}
	
	for(i = 0; i < 80; i++) {
		if(fibionnaci[i] <= 1) {
			continue;
		} else if (liczDzielniki(fibionnaci[i]) <= 2) {
			printf("%d \n", fibionnaci[i]);
		}
	}
	
	return 0;
}

int liczDzielniki(int digit) {
	int i, result = 0;
	for(i = 1; i <= digit; i++) {
		if(digit % i == 0) {
			result += 1;
		}
	}
	return result;
}
0

Sprawdź zagres unsigned long long. Tutaj masz osiemdziesiątą liczbę Fibonacciego: http://www.wolframalpha.com/input/?i=Fibonacci+80
Tak przekroczyłeś zakres. (edit: albo mi się o dwie cyfry machnęło, ale post niżej możesz mieć przyczynę)

1

A może tak zamiast:

printf("%d", ...);

zrób tak:

printf("%llu", ...);

1 użytkowników online, w tym zalogowanych: 0, gości: 1