Вывести все простые числа Фибоначчи (вместе с их номерами), меньшие x - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Я начинающий, учусь на первом курсе. Дали задание, не могу решить. Помогите, пожалуйста. Ввести число x. Вывести все простые числа Фибоначчи (вместе с их номерами), меньшие x.
Написал алгоритм. Как его теперь закончить? И есть ли ошибки?
#include <stdio.h>
 
int main()
{
    int x;
    scanf ("%d", &x);
    int a=0;
    int b=1;
    int c=0;
    int d=2;
    int e=0;
    while (c<=x)
    {
        c=b+a;
        a=b;
        b=c;
        while (d<c)
        {
           e=c%d;
           if (e=0)
           {
               d=d+1;
        }
           if (e>0)
        }
    }
    return 0;
}
Знаю, что тема уже давно избита, но все-таки найти ответы не могу(

Решение задачи: «Вывести все простые числа Фибоначчи (вместе с их номерами), меньшие x»

textual
Листинг программы
/*
 ============================================================================
 Name        : c_fibonacci_prime.c
 Author      : UranFlex
 Version     : 0.1 alpha
 Licanse     : Free for All
 Copyright   : UranFlex 2013
 Description : Ввести число x. Вывести все простые числа Фибоначчи (вместе с их номерами), меньшие x.
 *             C, Ansi-style
 ============================================================================
 */
 
#include <stdio.h>
#include <stdlib.h>
 
// функция возвращает число Фибоначчи номер n, работает как для положительных, так и для отрицательных n
int Fibonacci( int n );
// функция определяет является ли число простым
int IsPrime( int x );
// функция печатает все простые числа Фибоначчи, которые меньше заданного x
void PrintPrimeFibLowX( int x );
 
int main( void ) {
    int x;
    printf( "Введите число X " );
    scanf( "%d", &x );
    PrintPrimeFibLowX( x );
 
    return EXIT_SUCCESS;
}
 
int Fibonacci( int n ) {
    int fib = 0; // F( n )
    int i; // счетчик цикла
    int n1 = 1; // F( n + 1 ) или F( n - 1 )
 
    if ( n > 0 ) { // для положительных номеров F( n ) = F( n - 2 ) + F( n - 1 )
        if ( n <= 2 )
            return 1;
 
        int n2 = 1; // F( n - 2 )
        for ( i = 3; i <= n; ++i ) {
            fib = n2 + n1;
            n2 = n1;
            n1 = fib;
        }
 
    } else if ( n < 0 ) { // для отрицательных номеров F( n ) = F( n + 2 ) - F( n + 1 )
        if ( n == -1 )
            return 1;
 
        int n2 = 0; // F( n + 2 )
        for ( i = -2; i >= n; --i ) {
            fib = n2 - n1;
            n2 = n1;
            n1 = fib;
        }
 
    } else if ( n == 0 ) // для нуля
        return fib;
 
    return fib;
}
 
int IsPrime( int x ) {
// проверка - все простые числа могут быть только натуральными числа и больше 1
    if ( x <= 1 )
        return 0;
 
    int i = 2;
// проверяем в цикле делится ли число x на какие-либо числа от 2 до корень из x
    while ( i * i <= x ) {
        if ( x % i == 0 ) // если делитель найден, то число непростое
            return 0;
 
        ++i;
    }
    return 1; // если делитель не найден, то число простое.
}
 
void PrintPrimeFibLowX( int x ) {
    if ( x <= 2 ) { // простых чисел меньших #3 ЧФ не существует
        printf( "Простых чисел Фибоначчи меньших %d не существует !", x );
        return;
    } else {
        printf( "Простые числа Фибоначчи меньшие %d:\n", x );
 
        // счетчик ЧФ, начинаем проверку с ЧФ #3 ( равным 2 )
        int counter = 3; // так как оно является наименьшим простым числом
        while ( 1 ) { // в бесконечном цикле
            int currFib = Fibonacci( counter ); // находим очередное ЧФ
 
            if ( currFib >= x ) // проверяем, что оно меньше заданного x
                break; // если нет, то обрываем цикл
 
            if ( IsPrime( currFib ) ) // если оно простое,
                printf( "#%d = %d\n", counter, currFib ); // то печатаем его номер и значение
 
            ++counter; // увеличивая счетчик переходим к следующему ЧФ
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы