"Cogito ergo sum."

"Remember, remember The fifth of November The gunpowder treason and plot. I know of no reason Why the gunpowder treason Should ever be forgot." - V for Vendetta

Friss topikok

Linkblog

Kezdjük el 2 :)

2011.04.08. 23:15 Painkiller19910110

Kicsit mit szólnátok ha fejlesztenénk rajta? Aki futtatta egy kis idejig az biztos észre vette hogy a vizsgálás 1 és 200000 között viszonylag gyors és ez után kezd szép lassan belassulni. Sejtitek-e hogy miért van ez? Namost az osztok() az egy külső függvény aminek visszatérési értéke nem más mint az hogy a vizsgált szám hány darab osztóval rendelkezik... és ha ezek szám 2 akkor hívjuk őtet prímnek :) Ha több akkor pedig nem :) A program belassulásának legfőbb oka hogy legyen az adott számunk az 500000, ekkor a második ciklus ami ennek az osztóit vizsgálja kénytelen 1...500000-ig elbattyogni akár megvan már a 2 osztó akár már több van.  Innen jött az ötlet hogy egészítsem ki egy olyan feltétellel hogy amennyiben megvan már 3 osztó ne vizsgálja tovább az adott számot hanem menjen a következőre.

primkeresoupgrade.c

#include <stdio.h>
#include <stdlib.h>
int osztokszama;
int osztok(int j)
{
    int i,osztok=0;
    for(i=1;i<=j;i++)
    {

     if(osztok==3) break;

     if((j%i)==0) osztok++;
    }
    printf("A %d nek ennyi osztoja van: %d ",j,osztok);
    osztokszama=osztok;
    return osztokszama;
}

int
main ()
{
    int j;
    for(j=5000000;;++j)
    {
    osztok(j);
    if (osztokszama==2) printf("  PRÍMSZÁM!!!\n");
    else printf("\n");
    }
  return 0;
}

Ezzel a kis módosítással rengeteg időt spórolunk meg, de elég egy állatorvosi lovas példára gondolni, ha van egy program aminek a futási ideje 6 sec és ezt a programot 1000000 szor használják, akkor csak 1 sec-es gyorsítással 1000000 másodpercet tudunk megspórolni, ami 16666 perc, 277 óra és ez 11,57 nap. :)

Szólj hozzá!

A bejegyzés trackback címe:

https://painkillerblogja.blog.hu/api/trackback/id/tr862810922

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása