当前位置: 首页 > 知识库问答 >
问题:

有人能帮我校正这个“100以下质数”代码的输出吗?

燕扬
2023-03-14

这个问题已经回答了所以基本上,我只是写下了一个代码,显示100以下的所有素数。这是代码:

    #include <iostream>
    using namespace std;
    int main()
    {
       int n=2,i;
       cout<<"All Prime numbers below 100 are : \n";

       while(n<=100)
       {
           for(i=2; i<n/2; i++)
           {
              if (n%i==0)
              {
                 goto restart;
              }

              else
              {
                 cout<<n<<"\t";
              }    
          }
          restart:
          n++;
      }
      return 0;
   }

All prime numbers below 100 are:

7  9  11  11  11  13  13  13  13  15  15  and so on ...                             
#include<iostream>
using namespace std;
int main()
{
    int n=2, i;
    while(n<=100)
    {
        for(i=2; i<=n/2; i++)
        {
            if(n%i==0)
            {
                goto label;
            }
        }
        cout<<n<<", ";
        label:
            n++;
    }
    return 0;
}

继续启动他们的代码,同事们:D

共有1个答案

邰伟彦
2023-03-14

你的答案是可以的,但有两个严重的错误。首先,为检查的每个模输出n。只有在所有模检查失败的情况下才应输出n。此外,您的边界条件也不太正确--它应该是<=。更改最小的工作代码将是:

#include <iostream>
using namespace std;
int main()
{
    int n=2,i;
    cout<<"All Prime numbers below 100 are : \n";

    while(n<=100)
    {
        for(i=2; i<=n/2; i++)
        {
            if (n%i==0)
            {
                goto restart;
            }
        }

        cout<<n<<"\t";

        restart:
        n++;
    }
    return 0;
}

如果您想使代码稍微干净一些,那么就不要使用goto,请使用双for循环和break。此外,i的边界条件应该是i*i<=n,因为这是一个更严格的边界。比如:

#include <iostream>

int main()
{
    cout<<"All Prime numbers below 100 are : \n";

    for(int n=2; n<100; ++n)
    {
        bool isPrime = true;
        for(int i=2; i*i<=n; i++)
        {
            if (n%i==0)
            {
                isPrime = false;
                break;
            }
        }

        if(isPrime)
            std::cout<<n<<"\t";
    }
}
 类似资料:
  • 我必须创建程序,这样我就可以输入3个字母加上像“Jan1999”这样的一年,并显示日历。

  • 我这里有一些关于Java的练习问题。我们应该在不使用编译器的情况下确定答案。 参考以下方法: 调用product(6)时的输出是什么? D)48 E)70 根据答案,正确的输出是48。我真的不明白为什么这是真的。6不符合基本情况,所以转到else语句。那么,乘积(6-2)=乘积(4),乘积(2)得到乘积(0),乘积(2)得到乘积(0),得到6*4,4*2,2*0,0*0。但那是32,不是48?是不

  • 问题内容: 我只是在android上开始,而我的java很生锈。我不记得曾经见过像这样嵌套在另一个函数中的函数。有人可以向我确切解释final的作用,并解释为什么您要在另一个函数中嵌套这样的功能吗? 问题答案: 这是一个匿名类。实际发生的情况是正在使用重写的函数创建 的子类。 关于匿名类的最优雅的事情之一是,它们使您可以在需要的地方准确定义单发类。此外,匿名类具有简洁的语法,可减少代码中的混乱情况

  • 错误 第6:44行:在函数“app”中调用React Hook“useState”,该函数既不是React函数组件,也不是自定义React Hook函数React Hook/rules of Hook 搜索关键字以了解有关每个错误的更多信息。

  • 当我试图点击按钮时,系统抛出这个错误信息。”在点(1158,533)处不可点击。其他元素将接收到点击” 我正在尝试单击span标签中的按钮,但发现此错误“在点(1158,533)不可点击。其他元素会收到点击“上面提到的代码有助于解决这个问题,有人可以解释这个代码吗?此代码中的参数是什么?我们能对参数有任何价值吗? 在此之前,我正在尝试此代码

  • 其目的是对用户输入的分数进行排序、显示和平均。我还没弄明白。如果你已经解决了这个问题,请帮忙。到目前为止,我已经尝试了这段代码,但它不起作用。 我从这段代码中得到的只是一个编译器错误。有人有什么建议吗?谢谢你。