Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
# define plik "plik.txt"
typedef struct lista{
int klucz;
struct lista *nast;
struct lista *poprzedni;
}lista;
void wloz(lista **pocz, lista **ogon, int elem)
{
lista *nowy;
nowy= (lista *)malloc(sizeof(lista));
nowy->klucz=elem;
nowy->nast=NULL;
nowy->poprzedni=NULL;
if(*pocz==NULL){
*pocz=nowy;
*ogon=nowy;
}
else{
nowy->poprzedni=(*ogon);
(*ogon)->nast=nowy;
(*ogon)=nowy;
}
}
void zdejmij(lista **pocz, int elem)
{
lista *tmp=(*pocz);
if((*pocz)==NULL){
printf("Brak el...");
}
else{
while(tmp!=NULL && tmp->klucz!=elem)
tmp=tmp->nast;
if(tmp->nast!=NULL){
tmp->poprzedni->nast=tmp->nast;
free(tmp);}
else{ tmp->poprzedni->nast=NULL;
free(tmp);}
}
}
void wypisz(lista *pocz){
clock_t start, stop;
float time;
FILE *fp;
start=clock();
fp=fopen("plik.txt", "a");
if(pocz==NULL)printf("Brak el...");
else while(pocz!=NULL){
stop=clock();
time=(stop - start);
fprintf(fp,"%d", pocz->klucz);
fprintf(fp,";");
fprintf(fp,"%0.3f
",time);
pocz=pocz->nast;
}
fclose(fp);
system("pause");
}
void sito()
{
lista *pocz=NULL;
lista *ogon=NULL;
lista *wsk;
lista *wsk2;
lista *temp;
int liczba,zakres;
printf("Podaj zakres wyszukiwania: ");
scanf("%d", &zakres);
wloz(&pocz,&ogon,2);
wloz(&pocz,&ogon,3);
for(liczba=2;liczba<zakres;liczba++)
{
if ((liczba%2)!=0 && ((liczba%3)!=0))
wloz(&pocz,&ogon,liczba);
}
wsk2=pocz->nast->nast;
wsk=wsk2->nast;
while(wsk2->klucz<=floor(sqrt(zakres))){
while(wsk)
{
if(((wsk->klucz%(wsk2->klucz))==0))
{
temp=wsk->nast;
zdejmij(&pocz,wsk->klucz);
wsk=temp;
}
else
wsk=wsk->nast;
}
wsk2=wsk2->nast;
wsk=wsk2->nast;
}
wypisz(pocz);
}
int main()
{
sito();
return 0;
}