Hitta primtal i C++, problem. [LÖST]
Postat: 01 maj 2014, 12:30
Hej
Jag håller på med en skoluppgift som ska hitta alla primtal mellan 1 till n. Jag har skrivit koden, programmet körs och fungerar nästan, jag får fram alla prims men även också sammansatta tal vars faktorer är prims...
Så här kan min utskrift se ut:
3, 5, 7, 9, 11, 13, 17, 19, 23, 25
Talen 9, 25, är ju sammansatta tal men jag får inte bort dom...
Har gått bet hur jag ska ändra koden för att bara få fram äkta prim... Koden är nedan
Jag håller på med en skoluppgift som ska hitta alla primtal mellan 1 till n. Jag har skrivit koden, programmet körs och fungerar nästan, jag får fram alla prims men även också sammansatta tal vars faktorer är prims...
Så här kan min utskrift se ut:
3, 5, 7, 9, 11, 13, 17, 19, 23, 25
Talen 9, 25, är ju sammansatta tal men jag får inte bort dom...
Har gått bet hur jag ska ändra koden för att bara få fram äkta prim... Koden är nedan
Kod: Markera allt
/* ==================================================================
* Primtals Finder
*
* Programmer: Johnny Lindberg
* Date: 2014-05-01
* Version: 0.01 (beta)
*
* Description:
* Detta program kontrollerar efter primtal till av användaren angivet
* tal. Programmet ska kunna räkna ut vilka som är primtal genom en
* enkel algoritm.
* ================================================================*/
#include <iostream>
#include <math.h>
using namespace std;
// Funktionsprototyper
void SkrivUtText();
bool PrimFinder(int);
// Main funktion
int main()
{
short int siKandidat;
SkrivUtText();
cin >> siKandidat;
cout << "\nPrimtal funna upp till ditt inmatade tal.\n";
if(siKandidat >= 2)
{
cout << "2" << " ";
}
// Kör en for-loop för att kolla varje tal upp till mitt inmatade
for(short int i = 3; i < (siKandidat + 1); i += 2)
{
if(PrimFinder(i))
{
cout << i << " ";
}
}
cout << "\n\n";
system("PAUSE");
return 0;
}
// Funktion för att skriva ut lite välkomsttext
void SkrivUtText()
{
cout << "MADZerQ's Primtals Finder - Du \x84r primad...\n";
cout << "Detta program letar efter primtal upp till det\n";
cout << "tal som du anger.\n";
//cout << "Tiden det tar att hitta talet\n";
//cout << "kommer ocks\x86 att skrivas ut tillsammans med\n";
//cout << "primtalen.\n\n";
cout << "Ange det tal som du vill stoppa vid, avsluta med enter: ";
}
// Funktion för att hitta primtal, tar ett heltal som argument
bool PrimFinder(int iPrim)
{
// Kontrollera talet och returnera falskt om det inte är ett primtal, annars sant!
for(short int i = 3; i < sqrt(double(iPrim)); i++)
{
if(iPrim % i == 0)
{
return false;
}
return true;
}
}