Обратный цикл for ... хочу печатать числа в обратном порядке - PullRequest
1 голос
/ 29 апреля 2010

Как бы я изменил этот цикл, чтобы печатать простое число в обратном порядке ... сначала начиная с самого большого

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;

}

Ответы [ 2 ]

12 голосов
/ 29 апреля 2010

Вы можете изменить цикл for следующим образом:

for( int i=10000; i>=3; i--) {

Как говорится, вы также можете упростить это. Вам нужно только проверить, пока не достигнете квадратного корня числа. Также убедитесь, что, когда вы обнаружите, что число не простое, вы сразу же выбываете:

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;
}
1 голос
/ 29 апреля 2010

Просто измените направление внешнего цикла for.

int main()
{
    bool prime;
    for( int i=10000; i>=3; --i)
    {
        prime = true;
        for(int n=2; n<=i-1; n++)
        {
            if( i%n == 0)
            {
                prime = false;
            }
        }
        if(prime)
        {
            cout << i << " ";
        }
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...