Hódító / Queosia forum

Hódító / Queosia forum (http://forum.hodito.hu/index.php)
-   PC (hardver, szoftver, játékok stb.) (http://forum.hodito.hu/forumdisplay.php?f=28)
-   -   Programozás (http://forum.hodito.hu/showthread.php?t=4435)

Dew 11-25-2010 17:12

Quote:

Originally Posted by BimmBimm (Post 271572)
A google elég sok szoftverét pythonban írja. Nem tudom összehasonlítani a c++ al, de a python egy interpretált nyelv a c++ nem.

köszi! hát rávettetek, hogy majd ha lesz időm utánanézzek kicsit... :p mindenesetre kíváncsi vagyok... :) (főleg, hogy minek háborognak annyit a kicsik... :D)

Ati 11-25-2010 17:14

Quote:

Originally Posted by Csokibácsi (Post 271591)
Minek ahhoz office?

Nem akarja otthon olvasni... :D

Redback 11-26-2010 18:08

Quote:

Originally Posted by Csokibácsi (Post 271591)
Minek ahhoz office?

Ehunvane

Nem nagyon használtam eddig a google docsot, de omstmár fogom :)

Quote:

Ne mondd, hogy elsőre feldolgoztad. Nem igaz. Most légyszíves olvasd el elölről. Ami nem megy elsőre, majd megy másodikra. Ami nem megy másodikra, madj sikerül harmadikra. Ami nem megy harmadikra...
Tetszik a befejezés :D

Csokibácsi 11-26-2010 19:08

Másik topikból beollózva :)
 
Quote:

Originally Posted by BimmBimm (Post 271364)
Az általam ismert legjobb módszer, ha csak a szám gyökéig keresed az osztóit.

PHP Code:

int isprime(unsigned int n)
{
    
unsigned int i;
    
unsigned int maxi=sqrt(n);


    for (
i=2;i<=maxi;i++)
    {
        if (
n%i==0) return 0;
    }
        return 
1;


(ez c kód)

Ez a sima osztogatós módszerhez képest majdnem ~250x-es gyorsulás (900000-ig kerestem a legnagyobb prímszámot).

Ennél még gyorsabb Eratosztenész szitálós módszere, 10 millás plafonnal ~30-35x gyorsabb mint a gyökös-osztós.
Igaz, durván zabálja a memóriát ha nagy számot keresünk, de ezzel akár lehet trükközni is :)
1 milliárdos limitnél 980MB RAM ugrik át foglaltba, viszont gyorsan megvan az eredmény, míg a gyökösnél a 100 millához 5 perc után már nem volt türelmem.

PHP Code:

int big_prime(int n)
{
    
int ijbigpr;
    
char tomb[n];
        
    for (
0ni++) tomb[i] = 1;
    
    for(
2ni++) {
        if (
tomb[i] == 1) {
            for(
2n+= itomb[j] = 0;
        }
    }
    
    for(
1ni++)
        if(
tomb[i] == 1bigpr i;

    return 
bigpr;
//tomb tartalmazza az osszes n-nel kisebb primet, nekem csak a legnagyobb kellett
//lehet jatszani unsigned long long valtozokkal is ...


(eziscébenvan)

A legjobb az AKS algoritmus, de azt próbálja ki más :)

A legnagyobb ismert prím pedig a 2^43112609 − 1 :D

Redback 01-18-2011 19:30

Elakadtam. 7 számjegy minden lehetséges változatában fel kéne írnom a számokat. A 0 biztosan nincs a számjegyek között. Erre tud valaki egy jó permutáló algoritmust?

Padlócsempe 01-18-2011 19:42

7 egymásba ágyazott for ciklus

Redback 01-18-2011 19:56

Quote:

Originally Posted by Padlócsempe (Post 276627)
7 egymásba ágyazott for ciklus

Minden for ciklussal egy-egy számjegyet pakolok arrébb?

Valahogyan meg lehet oldani, hogy számjegyek számától függetlenül megcsinálja?

BimmBimm 01-18-2011 20:01

Itt egy megoldás permutációkra, anno első éves anyagból C nyelven:

PHP Code:

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <math.h>

int hiba[8];
int pont[8];
int sorr[8];

char chs[11];
//int poss[];
//pt(chs,0);
int pt(chars,int dint usedc[],FILE *out)
{
    
int i;
    
char tmp;

    
    
        for (
i=0;i<strlen(chs);i++)
        {
            if (
usedc[i]==1) continue;

            
usedc[i]=1;
            
tmp=s[d];
            
s[d]=chs[i];
            
pt(s,d+1,usedc,out);
            
tmp=s[d];

            
usedc[i]=0;
        }

    if (
d<=strlen(chs)-1)
         return 
0;


        
fprintf(out,"%s\n",s);

        return 
1;
    
}

int main()
{
    
int i,i2,i3;
    
int dob;
    
int eldob=-1;
    
int tmp;
    
char news[50];
    
int usedc[50];

    
FILEin=fopen("be.txt","rt");
    
FILEout=fopen("ki.txt","wt");

    
fscanf(in,"%s",&chs);
    
fclose(in);

    
memset(usedc,0,sizeof(usedc));

    for (
i=1;i<strlen(chs);i++)
    {
        for (
i2=strlen(chs)-1;i2>=i;i2--)
        {
            if (
chs[i2-1]>chs[i2]) 
            {
                
tmp=chs[i2];
                
chs[i2]=chs[i2-1];
                
chs[i2-1]=tmp;
            }
        }
    }

    
strcpy(news,chs);
    
pt(news,0,usedc,out);

    
fclose(out);

    return 
0;


A spacifikáció:

Bemenet
A bemenetet a be.txt fajlbol olvassuk be. A bemenet egy szobol all, melyet sorvegejel kovet. A szoban
csak ekezet nelkuli kis- es nagybetuk szerepelhetnek, azaz szokoz, TAB, illetve mas karakterek nem. A
bemeneti szo betui paronkent kulonbozoek, tehat egy betu legfeljebb egyszer szerepelhet benne.
A bemeneti szo betuinek szama M (1 <= M < 10).
Kimenet
A kimenetet a ki.txt fajlba ırjuk ki. A kimenet M! db sorbol all: minden egyes sorban a bemenetkent
kapott szo betuinek egy permutacioja all, melyet rogton sorvegejel kovet. A szavak kiırasi sorrendje az
abece szerint tortenjen. A nagybetuk a kisbetuk elott vannak az abecesorban!

Padlócsempe 01-18-2011 20:07

int szám;

for (int i = 1; i < 10; i++)
{
for (int j = 1; j < 10; j++)
{
for (int k = 1; k < 10; k++)
{
szám = i * 100 + j * 10 + k;
}
}
}

Így gondoltam, csak 3 helyett 7-el.
Ha te akarod megadni hány számjegyre csinálja ahhoz valószínűleg rekurzív függvény kéne.

Redback 01-18-2011 20:37

Köszi Csempe, sokat segítettél!

Bimm sajnos c-hez még nem konyítok, azért köszi :(


All times are GMT +1. The time now is 06:03.

Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Design partly based on Hódító's design by Grafinet Team Kft.

Contents and games copyright (c) 1999-2020 - Queosia, Hódító

Partnerek: Játékok, civ.hu