从用户输入范围内输出质量数量

Outputting amount of prime numbers from a user input range

本文关键字:质量数 输出 范围内 用户 输入      更新时间:2023-10-16

我在计算机科学学院课程中,并负责编写一个程序,以在用户指示的范围内输出质量数量。这是提示:

编写一个C 程序以询问用户并输入一个开始值和一个 一系列整数的最终价值。计数并输出数量 该范围内的质数(包括端点)。例如,如果 用户输入2和10,排名应该是:"有4个Prime 在给定范围内的数字。"请勿输出质数本身 在最后提交中。请勿在代码中使用Break语句。

复制并将输出粘贴到代码底部的评论。 将您的名字写入输出。除了main()是 必要。

测试数据:50至100。

我已经在网上搜索了潜在的解决方案,但仍然无法围绕如何使用限制编写此程序。这是限制:

  • 我不能使用break语句
  • 我不能使用函数

我班级的最新概念是循环(适用于,等等),所以我不能使用数组或任何类似的东西。

我已经在线修改了一个代码以适合提示,但它使用了休息:

#include <iostream>
using namespace std;
int main () 
{
    int min, max, i, primeNumbers;
    cout << "Enter a minimum integer: " ;
    cin >> min;
    cout << "Enter a maximum integer: " ;
    cin >> max;
    primeNumbers = 0;
    for (i=min; i <= max; i++) 
        for (int j=2; j<i; j++)
        {
            if (i % j == 0) 
                break;
            else if (i == j+1){
                primeNumbers++;
            }
        }   
    cout << "There are " << primeNumbers << " prime numbers" << endl;
    return 0;
}

输出:

Enter a minimum integer: 50
Enter a maximum integer: 100
There are 10 prime numbers

使用标志跟踪是否找到任何因素。

for (i=min; i <= max; i++)
{
    bool hasFactor = false;
    for (int j=2; j<i; j++)
    {
        if (i % j == 0) 
            hasFactor = true;
        if (i == j+1 && !hasFactor)
            primeNumbers++;
    }
}

然后,您可以将第二个if移到内部循环外。

for (i=min; i <= max; i++)
{
    bool hasFactor = false;
    for (int j=2; j<i; j++)
    {
        if (i % j == 0) 
            hasFactor = true;
    }
    if (!hasFactor)
        primeNumbers++;
}

您也可以通过在hasFactor设置后立即停止内部循环来优化它,从而模拟break语句而无需实际使用。

for (i=min; i <= max; i++)
{
    bool hasFactor = false;
    for (int j=2; j<i && !hasFactor; j++)
    {
        if (i % j == 0) 
            hasFactor = true;
    }
    if (!hasFactor)
        primeNumbers++;
}