用于计算素数不起作用的小程序

时间:2016-04-18 23:02:47

标签: c++ visual-studio syntax visual-studio-2015 syntax-error

完成后,该程序将输出所有素数高达1000,这是一个相当简单的程序,虽然我已阅读并重新阅读语法多次此时它仍然无法正常工作

自原始帖子以来,代码已被编辑,现在运行时出现0错误,但不会显示正确的结果,而是一遍又一遍地显示008D1389。

这是完整的代码:

#include <iostream>
using namespace std;
//funtion prototypes
int output_number, number = 1, value = 1,  i;
bool is_this_number_prime(int number_in_question);
bool does_it_have_factors(int numerator, int denominator);
int prime_number_sender();
int prime_number_output();

//function definitions
int prime_number_output()
{
    int value;
    value = prime_number_sender();
    return value;
}
int prime_number_sender()
{
    int value = number;
    if (is_this_number_prime(number) == true)
        return value;
    else
        return 0;

}



bool is_this_number_prime(int number_in_question)
{
    bool answer = true;
    int i;
    for (i = 2; i <= number; i++)
    {
        if (does_it_have_factors(number, i) == true)
            answer = false;
    }
    return answer;
}

bool does_it_have_factors(int numerator, int denominator)
{
        bool result = false;

if (numerator % denominator == 0){
    bool result = true;
}
return result;

}
int main() {

bool is_this_number_prime(int number_in_question);
bool does_it_have_factors(int numerator, int denominator);
int prime_number_sender(int number_in_question);
int prime_number_output();
int output_number = prime_number_output();
int i;
for (i = 2; i <= 1000; i++)
{
    cout << prime_number_output << endl;
    number++;
}
    return 0;


}

如果有人能够解释为什么代码不能正常工作,我将非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码为我带来了很多错误。

  

main.cpp | 48 |错误:函数参数太少&#39; int prime_output(int)&#39; |

您已将prime_output声明为int prime_output(int value),但您会立即使用本地变量value隐藏参数value。你也可以删除参数,它对你没有任何帮助。

  

main.cpp | 52 |错误:函数参数太少&#39; int perfect_output(int)&#39; |

与上述相同的问题。看起来您似乎正在尝试直接修改参数,这是一个不可行的方法。尝试使用参考:

int perfect_output(int& value)

虽然函数本身很奇怪。您不输出任何内容或进行任何计算。我觉得你可能还没写完这篇文章。

  

main.cpp ||在函数&#39; void user_selection()&#39;:|
  main.cpp | 59 |错误:在此之前不允许使用函数定义&#39; {&#39;令牌|

这可能是您收到问题提到的错误的地方。您的格式化使得很难直接看到它;幸运的是Code :: Blocks告诉我问题所在。

void user_selection()
{

你永远不会关闭它。 (更确切地说,你的右大括号一直在文件的末尾,它会触发另一个不匹配错误。)

  

main.cpp | 87 |错误:在&#39;}&#39;之前的预期声明令牌|

见上文。这是以某种方式从user_selection分离的结束括号。尝试对代码格式更加小心;你越容易阅读它,你就越容易在编译器之前看到这样的东西。

  

main.cpp | 63 |错误:在&#39;&lt;&#39;之前预期的primary-expression令牌|

您的if语句格式奇怪。像这样将= <更改为<=

for (i = 2; i <= 1000; i++)//if numbers are 1 off, make i = 1.