Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Primzahlen berechnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
24.03.2004, 09:03 Uhr
~MAN
Gast


Wieder mal ein neues (jedoch einfaches) Rätsel:

Schreibe das einfachste C-Programm, welches einem Array (bool bIsPrimzahl[500] ) zuweist, ob das aktuelle Feld eine Primzahl ist.

Beispiel:

C++:
bool bIsPrimzahl[500];
if( 13 == Primzahl )
{
  bIsPrimzahl[13] = true;
}
else
{
  bIsPrimzahl[13] = false;
}



Es soll nach diesem Prinzip ausgewertet werden (also einfach true oder false zuweisen, die Methode wie ihr es macht, sollt ihr euch natürlich ausdenken).

Es soll so einfach wie möglich programmiert sein!

Viel Spass


mfG

MAN
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.03.2004, 10:00 Uhr
~the saint
Gast



C++:
#include <stdio.h>
main(){int z,i=2,j=0;bool b[500];while(j<500){scanf("%d",&z);while((i*i<=z)&&(z%i!=0))i++;b[j]=(i*i<=z)?0:1;j++;};}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.03.2004, 10:14 Uhr
~MAN
Gast


Ok, ich stell das Rätsel mal neu, das mit dem Array war vielleicht zu verwirrend:

Schreibe ein einfaches (Es kann schon formatiert sein ) Programm welches die Primzahlen von 1 bis 500 ausgibt!


Viel Spass!


mfG

MAN
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.03.2004, 10:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Schreibe ein einfaches (Es kann schon formatiert sein ) Programm welches die Primzahlen von 1 bis 500 ausgibt!



C++:
int main(){printf("2,3,5,7,11,13,17,19,23,29,31,37,41,43,48,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,4,19,421,431,433,439,433,449,457,461,463,467,479,487,491,499\n");}

--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 24.03.2004 um 10:59 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.03.2004, 10:59 Uhr
(un)wissender
Niveauwart


Will dich ja nicht kränken, aber das hatten wir schon öfters!
Trotzdem gut, dass jemand Rätsel stellt, weiter so!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.03.2004, 11:03 Uhr
~MAN
Gast


Oh... na dann vielleicht fällt mir ja mal eins ein, was ihr hier noch nich hattet...

Soll ich trotzdem meine Lösung posten?

ja *g*:


C++:
#include <stdio.h>

void main ()
{
    int i = 0;

    while( i++ < 500 )
    {
        if( !( i % 2 == 0 && i / 2 != 1 ||
                     i % 3 == 0 && i / 3 != 1 ||
                     i % 5 == 0 && i / 5 != 1 ||
                     i % 7 == 0 && i / 7 != 1    )    )
        {
            printf( "%i\t", i );
        }
    }
}




So hätte ich mir es vorgestellt... aber wenn das schon mal durch war :


mfG

MAN
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.03.2004, 11:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender
ich glaub wir haben das aber noch nicht gegolft oder?

ich würd vorschlagen zum golfen machen wirs so das dem proggie die zahl übergeben wird (als 1. parameter) bis die er die primzahlen ausgeben soll
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 24.03.2004 um 11:08 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.03.2004, 11:14 Uhr
~MAN
Gast



C++:
#include <stdio.h>
#include <stdlib.h>

void main( int argc, char* args[] )
{
    int i = 0;

    while( i++ < atoi( args[1] ) )
    {
        if( !( i % 2 == 0 && i / 2 != 1 ||
                     i % 3 == 0 && i / 3 != 1 ||
                     i % 5 == 0 && i / 5 != 1 ||
                     i % 7 == 0 && i / 7 != 1    )    )
        {
            printf( "%i\t", i );
        }
    }
}



verstehe vom "golfen" noch ned viel, muss ich jetzt wieder n neues feature "fordern" ?

mfG

MAN
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.03.2004, 11:31 Uhr
(un)wissender
Niveauwart


Hier noch eine Lösung...


C++:
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cstdlib>
#include <cmath>

class Primtester {
    
public:
    Primtester () : counter(0) {}
    
    bool operator()(const bool)
    {    
       return isPrim(counter++);    
    }
    
    bool isPrim(unsigned int digit) const
    {
        if(!(digit & 1))
            return false;
        
        unsigned int square_root = static_cast<unsigned int>(sqrt(digit) + 1);
        
        for(unsigned int i = 3; i < square_root; i += 2)
        {
            if(digit % i == 0)
                return false;
        }
        
        return true;
    }
    
private:
    unsigned int counter;
};

int main(int argc, char *args[])
{
    if(argc < 2)  {
        std::cout << "Need Input!" << std::endl;
        return 0;
    }
    
    unsigned int length = abs(atoi(args[1]));
    
    bool *array = new bool[length];
    
    std::transform(array, array + length, array, Primtester ());  
    
    std::copy(array, array + length, std::ostream_iterator<bool>(std::cout, " "));
    
    delete [] array;
    return 0;
}




Bearbeitung:

Als Parameter einfach die Länge des Feldes übergeben.
Das Programm sollte recht schnell sein, zumindest wenn man Heuristiken zur Findung von Primzahlen außen vor läßt.
Wer Fehler findet, darf mich steinigen.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 24.03.2004 um 11:36 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.03.2004, 11:46 Uhr
~MAN
Gast


dieses Programm gibt ja lediglich 1 oder 0 (true oder false) aus, ob die Zahl ne Primzahl ist. Aber es schreibt die Zahlen nich aufn Bildschirm...

Also, was nun? Was macht man denn genau beim golfen?


mfG

MAN
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: