【发布时间】:2023-12-10 18:02:02
【问题描述】:
这是我在这里的第一篇文章,所以我希望我做的一切都是正确的。
我最近的编程挑战有点问题。目标是让用户输入一个数字,并让程序输出介于 0 和输入的数字之间的所有素数。我的策略是让 for 循环对从 1 到输入的每个数字进行简单检查,方法是将其除以前面的每个数字,直到循环达到 1。如果在检查中的任何一点,程序遇到一个数字,该数字分为循环当前打开的数字,循环的那部分是“中断”并继续到下一个数字。如果除数达到 1,那么程序将成功确定没有任何东西可以均匀地除以原始数字并将该数字输出为素数。
我对编程很陌生,但我认为这是我如何使用 break 的问题。编译程序时,它只打印输入的原始数字,不打印其他内容。但是,我已经检查以确保我所有的整数和循环都在工作。关于我上述问题的任何帮助,或者我是否可以使我的代码更高效或“正确”,我们将不胜感激。
#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;
}
【问题讨论】: