for range with range

时间:2017-11-02 15:05:42

标签: c++ for-loop

我需要制作一个程序,计算输入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;
         }
 }

1 个答案:

答案 0 :(得分:0)

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

#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; 
}