Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » bool funktion?

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 <
000
11.04.2008, 17:40 Uhr
Ander



hallo, ich bin ein blutiger c++ anfaenger und hatte nach dem letzten kaenguru-wettbewerb die idee, eine aufgabe ueber ein programm zu ueberpruefen.

folgendes war die fragestellung: wenn eine primzahl (ohne 1) mit 4 potenziert wird und letztlich 1 addiert, wie oft ergibt dies wieder eine primzahl?
also als beispiel (2^4)+1 = 17 -> primzahl

um das ganze natuerlich besonders toll zu machen, wollte ich die ueberpruefung der primzahl mit einer 2.funktion loesen. da ich aber keinen anderen befehl als void dafuer kenne, scheint das ganze nicht zu funktionieren.
ziel ist es, dass das programm eine primzahl identifiziert, sie danach hoch 4 nimmt +1 und letztlich wenn das ergebnis wieder eine primzahl ist eine textausgabe macht, sonst aber nicht.

meine idee war dass ich dafuer wohl sowas wie eine bool funktion brauche, habe aber keinen schimmer wie das aussehen soll; vielleicht kann mir jemand helfen?


C++:
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;

int pz; //die primzahl
long zsch; //das ergebnis von pz^4 + 1
bool primzahl;

void primcheck(long checkloop)
{
    int divisor;
    primzahl = true;
    for (divisor=2; primzahl = true && divisor <= 7; divisor++) // ist && richtig fuer und-oder ?
     {
        if (0==checkloop % divisor)
         {
            primzahl = false;
         }
     }
     return primzahl;
}

int main()
{  
    for(pz=2; pz<=100; pz++)
     {
        primcheck(pz);
        if (primzahl = true)
         {
            zsch = (pz*pz*pz*pz) + 1; // ich hatte hier ( (pz)e+4 ) +1 probiert, aber das  klappt irgendwie nicht
            primcheck(zsch);  
         }
        if (primzahl = true)
         {
            cout << "(" << pz << " hoch 4)+1 ist " << zsch << " und eine Primzahl." << endl;
         }
    }
    
    cout << "Untersuchung abgeschlossen.";
    
    getch();
    return 0;
}



waere auch schon froh, wenn jemand die fragestellungen im quellcode beantworten koennte^^

Dieser Post wurde am 11.04.2008 um 17:42 Uhr von Ander editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2008, 18:16 Uhr
0xdeadbeef
Gott
(Operator)


Au weia. Also, folgende Kommentare:

1. = ist der Zuweisungsoperator, == ist ein Vergleichsoperator. Das bedeutet,

C++:
if(primzahl = true) {


ist das selbe wie

C++:
primzahl = true;
if(primzahl) {


...und das ist nicht das, was du da willst. Dementsprechend

C++:
if(primzahl == true) { // so ist's richtig



2. Lass das mit den globalen Variablen sein, das macht dir nur Ärger. Spätestens, wenn du Threads verwendest, höchstwahrscheinlich schon lange vorher, und später wiederverwenden kannst du den Code auf die Art nicht. Benutz lokale Variablen und Rückgabewerte, also zum Beispiel

C++:
bool ist_primzahl(long x) {
  for(long i = 2; i * i <= x; ++i) {
    if(x % i == 0) {
      return false;
    }
  }

  return true;
}


...wobei das natürlich keine besonders hochoptimierte Prüfung auf Primzahlen ist, und

C++:
int main() {
  int pz; //die primzahl
  long zsch; //das ergebnis von pz^4 + 1

  // ...
}


anstelle der globalen Deklaration.

3. Dinge wie

C++:
double d = 1.2e3;


sind Konstanten, die zur Compilezeit vom Compiler geparst und durch den betreffenden Wert ersetzt werden. Das e ist hier kein Operator, der zur Laufzeit ausgewertet wird, dementsprechend kannst du ihn in Laufzeitberechnungen nicht benutzen. Außerdem ist 1.2e3 nicht etwa 1.2³, sondern 1.2 * 10³ bzw. 1200, und brächte dir hier dementsprechend überhaupt nichts. Wenn du Potenzen brauchst, das geht folgendermaßen:

C++:
#include <cmath>

int main() {
  std::cout << std::pow(2, 3) << std::endl; // gibt 2³, also 8 aus.
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.04.2008, 08:30 Uhr
xXx
Devil


Die Frage ist etwas komisch, da doch nichteinmal die Menge aller Primzahlen identifiziert ist ... na okay doch. Unendlich.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: