反转for循环...想要反向打印数字

use*_*514 1 c++ loops for-loop

如何更改此循环以反向打印素数...从最大的一个开始

int main(){

    bool prime;
    for( int i=3; i<=10000; i++){
        prime = true;
        for(int n=2; n<=i-1; n++){
            if( i%n == 0){
                prime = false;
            }
        }
        if(prime){
            cout << i << " ";
        }
    }
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 12

您可以按如下方式反转for循环:

for( int i=10000; i>=3; i--) {
Run Code Online (Sandbox Code Playgroud)

话虽这么说 - 你也可以简化这个.您只需要检查,直到到达该数字的平方根.还要确保,当您发现某个数字不是素数时,您会立即突破:

int main() {

    bool prime;
    for( int i=10000; i>=3; i--) {
        prime = true;
        int max = sqrt(i)+1; // Don't check beyond this...
        for(int n=2; n<=max; n++)
        {
            if( i%n == 0){
                prime = false;
                break; // This prevents you from continually checking!
            }
        }
        if(prime){
            cout << i << " ";
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)