Liczby pierwsze w języku C-zadanie na laboratoria.

0

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. :)

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.

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