#c #function #primes #fibonacci
#c #функция #простые числа #фибоначчи
Вопрос:
for (int x = 3; x <= 10000; x )
{
int f = fibonacci(x);
if (isPrime(f))
{
cout << setw(2) << nCounter << setw(18) << f << endl;
nCounter ;
}
}
cout << "Enter any character to quit: ";
cin.get();
Как следует из названия, я застрял, пытаясь найти подходящий способ выхода из цикла for, но также правильно использовать свои функции. Я пробовал делать while (f <= 10000)
и несколько других методов, но ответы всегда разные.
Программа предназначена для выполнения последовательности Фибоначчи и проверяет, являются ли числа в последовательности «простым» числом, пока Фибоначчи не достигнет 10000 или еще чего-то.
В настоящее время, когда он запускается, он просто продолжается, пока не достигнет большого отрицательного числа.
Я НЕ МОГУ ИСПОЛЬЗОВАТЬ ВЕКТОРЫ
весь код:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
bool isPrime(long long n);
long long fibonacci(int n);
int main()
{
double nCounter = 1;
cout << "Fibonacci Primes by Luke" << endl;
cout << endl;
cout << setw(2) << "n" << setw(18) << "Fibonacci Prime" << endl;
cout << "==" << setw(18) << "===============" << endl;
for (int x = 3; x <= 10000; x )
{
int f = fibonacci(x);
if (isPrime(f))
{
cout << setw(2) << nCounter << setw(18) << f << endl;
nCounter ;
}
}
cout << "Enter any character to quit: ";
cin.get();
}
bool isPrime(long long n)
{
for (int i = 2; i < n; i )
{
if (n % i == 0)
return false;
}
return true;
}
long long fibonacci(int n)
{
if (n <= 1)
return n;
return fibonacci(n - 1) fibonacci(n - 2);
}
вот время, которое я пытался использовать, но long long fibonaci всегда возвращает ‘2’ и создает бесконечный цикл.
int x = 3;
long long f;
while (f <= 10000)
int f = fibonacci(x);
if (isPrime(f))
{
cout << setw(2) << nCounter << setw(18) << f << endl;
nCounter ;
}
Комментарии:
1. Вы уверены, что хотите вычислить 10000 чисел Фибоначчи? Эти числа очень большие и не поместятся в
int
.2. Я уверен, что вы совершенно неправильно прочитали свое домашнее задание. Вас не просят вычислить первые 10000 чисел Фибоначчи. Вас попросят вычислить все числа Фибоначчи до 10000. Это две совершенно разные вещи.
3. Я обновил свой пост со всем кодом. Меня просят вычислить все простые числа Фибоначчи до 10000, и программа работает, но не завершается при попадании.
4.Ваш
while (f <= 10000)
, кажется, правильный подход, но вы должны использовать его правильно (например, объявитьf
вне и перед циклом и присвоить ему начальное значение <10000).5. вы всегда можете добавить строку типа
if (f > 10000) break;
.. возможно, это не лучшее решение, хотя
Ответ №1:
Одним из способов было бы проверять условие на каждой итерации и прерывать цикл, когда f
он превышает 10000
for (int x = 3; x <= 10000; x )
{
int f = fibonacci(x);
if(f > 10000)
break;
if (isPrime(f))
{
cout << setw(2) << nCounter << setw(18) << f << endl;
nCounter ;
}
}
Вы также можете сделать это, преобразовав его в цикл while, но для этого вам нужно объявить и инициализировать f
и x
вне цикла.
int x = 3;
int f = fibonacci(x);
while(f <= 10000)
{
if (isPrime(f))
{
cout << setw(2) << nCounter << setw(18) << f << endl;
nCounter ;
}
x ;
}