Może mi ktoś przedstawić algorytm (napisany oczywiście w czystym języku C) na sprawdzenie czy liczba podana do tablicy dwuwymiarowej jest pierwsza? :) Będę ogromnie wdzięczny.
Pozdrawiam. :)
0
4
Sprawdź czy podana liczba ma jakieś dzielniki naturalne różne od 1 i siebie samej. Jeśli nie ma to jest pierwsza, z definicji.
0
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void sprawdzenie(int i, int j, int tab[i][j])
{
int k;
for(k=2;k<tab[i][j];k++)
{
do
{
if(tab[i][j]%k==0)
{
printf("\a Liczba nie jest pierwsza! \n");
printf("Podaj liczbe jeszcze raz, tak by byla pierwsza: \n");
scanf("%d",&tab[i][j]);
}
}while(tab[i][j]%k==0);
}
}
void zero(int i, int j, int tab[i][j])
{
do
{
if(tab[i][j]==0||tab[i][j]==1)
{
printf(" \a Liczba zero lub jeden nie jest pierwsza \n");
printf("Podaj liczbe pierwsza jeszcze raz: \n");
scanf("%d",&tab[i][j]);
}
}while(tab[i][j]==0||tab[i][j]==1);
}
int main(int argc, char *argv[]) {
int a,b,i,j;
printf("Podaj liczbe wierszy tablicy: \n");
scanf("%d",&a);
printf("Podaj liczbe kolumn tablicy: \n");
scanf("%d",&b);
int tab[a][b];
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("Podaj liczbe pierwsza, ktora chcesz zapisac w tablicy: \n");
scanf("%d",&tab[i][j]);
zero(i,j,tab);
sprawdzenie(i,j,tab);
}
}
puts("-------------------------------");
puts("");
puts("Podane liczb to: ");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("%d \n",tab[i][j]);
}
}
return 0;
}
0
czy jest ok? ;/
3
edit: a nie, ty po prostu to tak dziwnie napisałeś o_O
Anyway, na oko wygląda nawet znośnie, chociaż to jedna z najwolniejszych możliwych implementacji...
- przekazujesz do funkcji tablicę i indeksy a potem korzystasz tlyko z jednego elementu tablicy. WTF? To nie mogłeś przekazać już tylko tej jednej liczby?
- szukasz dzielników aż do n-1. Weź do ręki kartke papieru i wypisz dzielniki dla jakiejś liczby (tzn dzielnik który znalazłeś i wynik dzielenia). Następnie wyciągnij wnioski.
- weź do ręki kartę papieru i wypisz wszystkie parzyste liczby pierwsze. Następnie wyciągnij wnioski.