печатать простое число от 1 до n, пока n вводится через клавиатуру - PullRequest
0 голосов
/ 02 июля 2019

я знаю, что мой код немного странный, но я только начал программировать. Может кто-нибудь, пожалуйста, помогите мне понять, почему мой код не работает

    int n,i,j;
    printf("enter the value\n");
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
       for(j=2;j<=i;j++)
        {
            if( (i%j==0) && (i!=j)  )
            {
                 break;
            }
            else if(i!=j)
            {
                 continue;
            }
        }
        if(i==j)
        {
              printf("prime no are %d\n",i);
               continue;
        }
   }

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Программа не записывает, когда число простое.Попробуйте:

    int n,i,j,prime_count;
    bool is_prime;

    printf("enter the value\n");
    scanf("%d",&n);

    prime_count = 0;

    for(i=2;i<=n;i++)
    {
       is_prime = true;

       for(j=2;j<i;j++)
        {
            if( (i%j) == 0 )
              {
                 is_prime = false;
                 break;
              }

            // As said by Achal you may not need this condition, 
            // Your loop will continue by itself
            // else if(i!=j)
            //  {
            //     continue;
            //  }
        }
        if(is_prime)
           {
              prime_count++;
            }
   }

   // Then you can do what you want with the number of primes found
   // e.g. print it :
   printf("Number of primes: %d\n", prime_count);
0 голосов
/ 02 июля 2019

Ваш цикл выключен на 1. Должно быть:

for(j=2;j<i;j++)

В настоящее время j будет i + 1, если число простое, поэтому окончательная проверка не удалась

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...