Đề bài
Viết chương trình C# liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.
Số tự nhiên n được nhập từ bàn phím.
Lời giải
/**
* Chuong trinh liet ke cac so Fibonacci nho hon n la so nguyen to.
*
* @author viettuts.vn
*/
using System;
using System.Collections;
namespace VietTutsCsharp
{
class FibonacciNguyenTo
{
/**
* Ham main
*/
static void Main(string[] args)
{
int n;
Console.Write("Nhap so nguyen duong n = ");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("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))
{
Console.Write("{0} ", 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
*/
static 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
*
* @author viettuts.vn
* @param n: so nguyen duong
* @return 1: la so nguyen so,
* 0: khong la so nguyen to
*/
static bool isPrimeNumber(int n)
{
// so nguyen n < 2 khong phai la so nguyen to
if (n < 2)
{
return false;
}
// check so nguyen to khi n >= 2
int i;
int squareRoot = (int) Math.Sqrt(n);
for (i = 2; i <= squareRoot; i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
}
}
Kết quả:
Nhap so nguyen duong = 100 Cac so fibonacci nho hon 100 va la so nguyen to: 2 3 5 13 89