mboost-dp1

hurtig hjælp mangler til primtals beregner i C++


Gå til bund
Gravatar #1 - Qw_freak
10. nov. 2008 16:26
jeg har lavet et stykke kode som bare ikke vil virke, hvad er der galt!
den kan fin exekvere, men beregner alt som værende ikke primtal!
på forhånd tak!


#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;


int main()
{
int t, c, rest;
char i;
cout<<"Tast det tal du vil ha testet for primtalisme, tast derefter enter:\n\n";
cin>> t;
c=t;

if (t==0,t==1,t==2)
{
cout<< "ja, ";
cout<< c;
cout<< " lider af primtalisme012\n\n";
return 0;
}

else
{
for(i=2; i<=(c-1); i++)
{
if (c%i==0)
{
rest=0;
break;
}
else
{
rest=1;
}
}

if (rest==0)
{
cout<<"ja, ";
cout<< c;
cout<<" lider af primtalisme andre\n\n";
}
else
{
cout<< "nej, ";
cout<< c;
cout<<" lider ikke af primtalisme\n\n";

}
}
return 0;
}


Ps. jeg ved godt der er andre metoder, men hvorfor virker denne ikke?
Gravatar #2 - m_abs
10. nov. 2008 16:45
Du har skrevet dit første if statements forkert.

skal være
if ( i == 0 || i == 1 || i == 2 )

Bemærk to pipes || i stedet for ,

Og den kommer aldrig ind i dit for-loop da i er at typen char, da du sammenligner med en int skal i også være af den type.

Og dit sidste if statement med rest ser ud til at være vendt forkert.

Hvis rest == 0, så er du løbet ind i et andet tal der går op i det indtastede tal, men du spørger om det modsatte.
Gravatar #3 - Windcape
10. nov. 2008 16:46
Hvis vi prøver med 3 (3 er et primtal)


for(i=2; i<=(c-1); i++)
{
if(c%i==0)


Du tester på:

HVIS 3 % 2 ER LIG MED 0
= Primtal

Hvilket jo retunere false. Og det er forkert.

Ihvertfald hvad jeg lige kan se hurtigt.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login