Hadi paylaşayım bari asal sayı hesaplamak için yazdığım programı :) Bu program 1,000,000 'a kadar olan asal sayıları ortalama 49 saniyede buluyor benim (p4 3.00) makinede. Siz de deneyin, merak ettim.
/* written by Safak Ozpinar */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <sys/timeb.h>
int main(void) {
double dft, dlt;
int a,x,f,i;
int *asal, capasal=256;
int limit = 1000000; // bakilacak en buyuk integer
struct _timeb tb;
printf("Baslamak icin bir tusa basin...");
getch();
asal = (int*)malloc(sizeof(int)*capasal);
_ftime(&tb);
dft = time(NULL) + double(tb.millitm)/1000;
a = 1;
asal[0] = 2;
printf("% 5u ", 2);
for(x=3; x<=limit; x++) {
f = 0;
for(i=0; i<a; i++) {
if(x%asal[i]==0) {
f = 1;
break;
}
}
if(f==0) {
if(a>=capasal) {
capasal += capasal;
asal = (int*)realloc(asal, sizeof(int)*capasal);
}
asal[a] = x;
a++;
printf("% 5u ", x);
if(a%10==0) printf("\n");
}
}
_ftime(&tb);
dlt = time(NULL) + double(tb.millitm)/1000;
printf("\n\n%5.3f saniye surdu\n", dlt-dft);
printf("\n%d-%d arasinda %d tane asal sayi bulundu.\n",2,limit,a);
getch();
return 0;
}
Let`s make this world a better place to live !
|