Lập trình C - Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố
Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố
Đề bài: Nhập số tự nhiên n từ bàn phím. Hãy liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.
Lời giải
/**
* Chuong trinh liet ke cac so Fibonacci nho hon n la so nguyen to.
*
* @author viettuts.vn
*/
#include<stdio.h>
/**
* Ham main
*/
int main() {
int n;
printf("Nhap so nguyen duong = ");
scanf("%d", &n);
printf("Cac so fibonacci nho hon %d va la so nguyen to: ", n);
int i = 0;
while (fibonacci(i) < n) {
int fi = fibonacci(i);
if (isPrimeNumber(fi)) {
printf("%d ", fi);
}
i++;
}
}
/**
* Tinh so fibonacci thu n
*
* @param n: chi so cua day fibonacci tinh tu 0
* vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
* @return so fibonacci thu n
*/
int fibonacci(int n) {
if (n < 0) {
return -1;
} else if (n == 0 || n == 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
/**
* check so nguyen to
*
*
* @param n: so nguyen duong
* @return 1: la so nguyen so,
* 0: khong la so nguyen to
*/
int isPrimeNumber(int n) {
// so nguyen n < 2 khong phai la so nguyen to
if (n < 2) {
return 0;
}
// check so nguyen to khi n >= 2
int i;
int squareRoot = sqrt(n);
for (i = 2; i <= squareRoot; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
Kết quả:
Nhap so nguyen duong = 100
Cac so fibonacci nho hon 100 va la so nguyen to: 2 3 5 13 89