Podzielnosc C

0

Hey, pisze programy z ksiazki o podzielnosci w paru mam problem:

To jedno:
Napisz program, który wypisuje wszystkie dwucyfrowe liczby pierwsze, które po przestawieniu cyfr też są pierwsze. Przykładem takiej liczby jest 37 (73 jest liczbą pierwszą).

#include <stdio.h>

int pierwsze(int n);


main()
{int i=0;
int j=0;
for (i=1;i<10;i++)
     for(j=i;j<10;j++) 
          if(pierwsze(10*i+j) && pierwsze(10*j+i))

   printf("%d, %d",10*i+j,10*j+i);
 
}

int pierwsze(int n)
{if (n%2==0 && n>2) return 0;
int p;
for (p=3; p*p<=n ; p+=2)
if (n%p==0) return 0;
return 1;
}

Ale nie do końca działa to dobrze. Moze ktos napisac gdzie popełniłem błąd ?

Jeszcze jeden:

Dla liczby bedacej szescianem jakiejs liczby calkowitej wypisuje TAK, w przeciwnym wypisze NIE.

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n,i;
   printf("Podaj liczbe: ");
   scanf("%d", &n);
   if(n<1 || n>2000000000) {
          printf("Bledna liczba\n");

   }
   if(n==1)

   printf("Jesli 0 jest liczba naturalna = TAK jezeli 0 nie jest liczba naturalna = NIE\n");
   else {
          for(i=3;n%i==0;i=i*3);
          if(n==(i/3))
          printf("TAK\n");

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

}

0

Co do pierwszego problemu: dlaczego tak sądzisz? być może chodzi o to że na końcu printf-a nie zrobiłeś spacji, i dwie 2 cyfrowe liczby zlewają się w 4 cyfrową. moim zdaniem ta linijka powinna wyglądać np tak printf("%d, %d ",10i+j,10j+i);

edit: co do programu 2, należało by chyba wyliczyć pierwiastek 3-go stopnia i sprawdzić czy jest liczbą całkowitą.

0

Właśnie w tym momencie poprawilem: printf("%d,%d,",10i+j,10j+i);

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