首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中使用For循环查找素数

在C++中使用For循环查找素数
EN

Stack Overflow用户
提问于 2015-03-12 04:45:17
回答 3查看 1.1K关注 0票数 2

这是我在这里的第一篇文章,所以我希望我做的一切都是正确的。

在最近的编程挑战中,我遇到了一点问题。目标是让用户输入一个数字,并让程序输出0到输入的数字之间的所有质数。我的策略是让for循环对从1到输入的数字的每个数字运行一次简单的检查,方法是将它除以前面的每个数字,直到循环达到1。如果在检查过程中的任何点,程序遇到一个划分为循环当前所在数字的数字,则循环的这一部分将“中断”并继续到下一个数字。如果除数达到1,那么程序将成功地确定没有任何东西可以均匀地划分为原始数字,并将该数字输出为质数。

我对编程非常陌生,但我认为这是我使用break的一个问题。当编译程序时,它只打印输入的原始数字,而不打印其他任何数字。不过,我已经检查过了,以确保我的所有整数和循环都正常工作。任何关于我的上述问题的帮助,或者如果我可以使我的代码更有效或“正确”,我将不胜感激。

代码语言:javascript
复制
#include "stdafx.h"
#include <iostream>

int _tmain()
{
    using namespace std;
    int iUserInput;
    cin >> iUserInput;

    for(;iUserInput > 0; iUserInput--)
    {
        int iDivisor = iUserInput - 1;
        for (; iDivisor > 0; iDivisor--)
        {
            if (iUserInput%iDivisor == 0)
                break;
            if (iDivisor == 1)
                cout << iUserInput << endl;
        }
    }


    return 0;
}
EN

Stack Overflow用户

发布于 2015-03-12 05:01:30

以下部分:

if (iDivisor == 1) cout << iUserInput << endl;

在错误的位置。你需要把它放在内部循环之外:

代码语言:javascript
复制
for(;iUserInput > 0; iUserInput--)
{
    int iDivisor = iUserInput - 1;
    for (; iDivisor > 0; iDivisor--)
    {
        if (iUserInput%iDivisor == 0)
            break;
    }
    if (iDivisor == 1)
        cout << iUserInput << endl;
}

其他观察结果:

  • #include "stdafx.h"在这里是完全不必要的。删除it.
  • int _tmain()不是标准做法。将其设置为int main(),并确保其编译方式类似于匈牙利符号this.
  • iUserInput。把它看作是90年代以来微软的一次失败的实验,这在现代的C++中是完全无用的。如果将变量称为userInput.
  • Changing,则userInput变量的值可能会损害代码的可读性。毕竟,用户输入在输入之后不会更改。考虑倒计时一个userInput的副本,例如for(int count = userInput; count > 0; count--).
  • Make你的另一个C++循环也更紧凑:for (int divisor = userInput - 1; divisor > 0; divisor--).
  • Perhaps对于真正开始学习userInput的人来说太高级了,但你应该尝试处理非法用户输入,例如有人输入"X“而不是数字。您可以在每次输入操作后检查std::cin的状态,查看上一次操作是否成功。否则,您的程序可能会出现未定义的行为。
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28996992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档