Hitta primtal i C++, problem. [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
ZerQ
Inlägg: 160
Blev medlem: 01 aug 2007, 08:40
OS: Annat GNU/Linux
Ort: Ornsköldsvik
Kontakt:

Hitta primtal i C++, problem. [LÖST]

Inlägg av ZerQ »

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

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;	
	}
	
}
Senast redigerad av 1 ZerQ, redigerad totalt 8 gånger.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Hitta primtal i C++, problem.

Inlägg av Osprey »

Prova med att lägga det sista "return true;" utanför snurran istället... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
ZerQ
Inlägg: 160
Blev medlem: 01 aug 2007, 08:40
OS: Annat GNU/Linux
Ort: Ornsköldsvik
Kontakt:

Re: Hitta primtal i C++, problem. [LÖST]

Inlägg av ZerQ »

Hjärndunk i skrivbordet... :o

Osprey:
Tack så mycket, vad enkelt det vart då... Du har räddat min dag idag :)
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Hitta primtal i C++, problem.

Inlägg av mcNisse »

Du missar det första primtalet ;-)
Skriv svar

Återgå till "Programmering och webbdesign"