【问题标题】:for loop with range带范围的 for 循环
【发布时间】:2017-11-02 15:05:42
【问题描述】:

我需要编写一个程序来计算输入的 N 个从 N-10 到 N+10 范围内的所有素数。我不知道我做错了什么。为什么 Y 没有增加?

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main(){
    int N, Y;
    bool Prime=true;
    cout<<"Enter N: ";
    cin>>N;
    Y=N;
    for (int i=1; i<=N+10;i++){
         for(int k = 2; k <= sqrt(Y); k++,Y++){
             if(Y%k== 0) {
             Prime = false;
             }
         }
         if(Prime && Y>1)
         cout<< "Number " <<Y
         << " is Prime."<<endl;
         }
 }

【问题讨论】:

  • 你能评论你的代码吗?因为你的变量对我来说毫无意义
  • 你在内部循环中增加Y。
  • 这段代码有很多问题,很难知道从哪里开始。
  • 我是初学者。不是专业人士。是的,我知道我在内部循环中增加 Y,但是当你运行程序时它不起作用......:/
  • 外部循环应该是for(Y = N-10; Y &lt;= N+10; Y++),而不是内部的Y。

标签: c++ for-loop


【解决方案1】:

有太多事情是错误的。 应该是这样的:

#include <iostream>
#include <cmath>
using namespace std;
int main(){            
        int N;
        bool Prime;
        cin >> N;

        for (int i=1; i<=N+10;i++){
            Prime = true;
            int max = sqrt(i);
            for (int k = 2; k <= max; k++) {
                if((i % k) == 0) {
                    Prime = false;
                    break;
                }
            }
            if (Prime && (i > 1))
                cout << "Number " << i << " is Prime." << endl;
        }
    return 0; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2022-12-16
    相关资源
    最近更新 更多