gpt4 book ai didi

C++斐波那契程序

转载 作者:行者123 更新时间:2023-11-28 05:10:16 24 4
gpt4 key购买 nike

C++程序帮助你好,我正在写一个c++程序来打印出几个是素数的斐波那契数。该程序打印出 8 个数字,但不仅是质数。有人能帮我看看是怎么回事吗

#include <iostream>
#include <cmath>
using namespace std;

//fibonacci function
int fibonacci(int x) {
if ((x == 1) || (x == 2)) { return 1; }
return fib(x - 1) + fib(x - 2);
}

//prime test bool function

bool is_prime(double n) {
for (int i = 2; i <= sqrt(n); i++) {
if (n % i != 0) { return true; }
else { return false; }
}

// main function 
int main (){
int y = 1;
int c = 0;
while (y >= 0) {
fibonacci(y);

if ((is_prime(true)) && (fibonacci(y) != 1)) {
cout << fib(y) << " ";
count++;
if (c >= 8) { return 0; }
}
y++;

}

返回0;


最佳答案

您上面的代码为函数使用了双重名称,并且您还使用了 c 而您可能意味着 count

is_prime 函数逻辑应该采用 int 并且最好重写函数逻辑以查找显示数字是否为素数的值。

最后,将递归与 Fibonacci 函数结合使用会耗尽资源。最好使用普通循环。

对照您的代码检查此代码:

#include <iostream>
#include <cmath>
using namespace std;

int fib(int x)
{
int first = 0, second = 1, sum = 0;

if ((x == 1) || (x == 2)) { return 1; }
for (int i = 2; i <= x; ++i)
{
sum = first + second;
first = second;
second = sum;
}

return sum;
}

bool is_prime(int n) // n should be int not double
{
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0)
return false; // you should look for what breaks the condition

return true; // if nothing break the condition you return true
}

int main ()
{
for (int i = 1; i <= 8; ++i)
{
int f = fib(i);
if (is_prime(f))
cout << f << " ";
}
}

关于C++斐波那契程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com