Wyszukać wszystkie dzielniki danej liczby, które są liczbami pierwszymi

0

Program działa dobrze, ale nie jeśli podamy liczbę graniczną, np.3 które jest liczbą pierwszą i podzielną ale się nie wypisze boi <= number / 2 nie spełni warunku pętli

#include <stdio.h>

int divisor(long number)
{
   int i, j;

   if (number < 2)
       return 0;

   for (i = 2; i <= number / 2  ; ++i) {
       if (number % i == 0){

           for (j = 2; j * j <= i; ++j)
               if (i % j == 0)
                   break;
           if(j * j > i) printf("%d\t", i);
       }
   }
}

int main(void)
{
   divisor(3);

   return 0;
0

No wygląda paskudnie, ale cóż, teraz [CIACH!] jest ok.

#include <stdio.h>

int divisor(long number)
{
    int i, j;

    if (number < 2)
        return 0;

    for (i = 2; i <= number / 2 ; ++i) {
        if (number % i == 0){

            for (j = 2; j * j <= i; ++j)
                if (i % j == 0)
                    break;
            if(j * j > i) printf("%d\t", i);
        }
    }
    for (i = 2; i * i <= number; ++i)
    if( number % i ==0) return 0;
    printf("%d\t", number);
}

int main(void)
{
    divisor(9);

    return 0;
}

0

można też tak

#include <stdio.h>
 
int divisor(long number)
{
    int i, j;
 
    if (number < 2)
        return 0;
 
    for (i = 2; i <= number  ; ++i) {
        if (number % i == 0){
 
            for (j = 2; j * j <= i; ++j)
                if (i % j == 0)
                    break;
            if(j * j > i) printf("%d\t", i);
        }
    }
   
}
 
int main(void)
{
    divisor(5);
 
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1