простые числа заданного диапазона в c, используя только циклы - PullRequest
0 голосов
/ 15 ноября 2018

Как я могу написать программу, которая будет давать все простые числа заданного диапазона БЕЗ использования ЛЮБЫХ условий (используя только циклы!) На языке c.я пробовал много разных вариантов, но ни один из них не работает должным образом ... например:

что я уже пробовал:

#include <stdlib.h>
#include <stdio.h>

#define UNTIL 1000
#define NOT_INCLUDED 2
int main()
{
int prime =1, i =1,factor=0;

    for(prime=1;UNTIL>=prime ;prime++)
    {
        for( i=1;i<=prime;i++)
        {
            for(;prime%i==0;)
            {
                factor++;
            }
        }

        for(;factor==2;factor=0)
        {
            printf("prime number: %d \n",prime);
        }
    }

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Чтобы проверить, является ли N простым, переберите все числа от 2 до N, чтобы увидеть, делится ли N на любое другое число. Каждое число делится на 1, поэтому, когда вы проверяете числа на простое число, начинайте тестирование с 2.

Пример

#include <stdio.h>

int is_prime(int N)
{
    //0 and 1 are not primes
    if (N < 2)
        return 0;

    //start testing against 2
    for(int i = 2; i < N; i++) 
        if(N % i == 0)
            return 0; //not a prime

    return 1; //prime
}

int main()
{
    printf("Primes from 0 to 1000:\n");

    for(int i = 0; i < 1000; i++)
        if(is_prime(i))
            printf("%d, ", i);

    printf("\n");
    return 0;
}

Вы можете оптимизировать цикл, изменив диапазон на N/2.

for(int i = 2; i <= N/2; i++) 
    if(N % i == 0)
        return 0; //not a prime
return 1;//prime
0 голосов
/ 15 ноября 2018

Вызов принят: без условий, скрытых или нет

#include <stdio.h>
#include <stdlib.h> // atoi

int main(void) {
    const char *p = "2 3 5 7 11 13 17 19 23 29\0\0\0\0\0"; /* extend at will */
    for (;;) {
        p += printf("%d ", atoi(p));
        fflush(stdout);
        int z = 42 / *p;
        (void)z; /* unused warning */
    }
    return 0;
}

см. Код, работающий на ideone.com

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