作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!