• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Liczby złożone są liczbami pierwszymi...

Object Storage Arubacloud
0 głosów
608 wizyt
pytanie zadane 9 września 2019 w C i C++ przez Karpik Użytkownik (680 p.)

Cześć! Zrobiłem program, który sprawdza, czy liczba jest liczbą pierwszą. Trzeba oczywiście dorobić jeszcze sprawdzanie, czy aby na pewno to liczba, ale to nie jest aż takie ważne. Problem polega na tym, że program się bugguje gdy wpiszemy bardzo dużą liczbę. Czym jest to spowodowane?  Czy można to jakoś naprawić?

 

PS. Używam Microsoft Visual Studio

PPS. W konsoli wyskakuje to:

„PRRRT.exe” (Win32): załadowano „C:\Users\ja\source\repos\PRRRT\Debug\PRRRT.exe”. Symbole zostały załadowane.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\ntdll.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\kernel32.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\KernelBase.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\msvcp140d.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\vcruntime140d.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\ucrtbased.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
Wątek 0x2560 zakończył działanie z kodem 0 (0x0).
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\sechost.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\rpcrt4.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\sspicli.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\cryptbase.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\bcryptprimitives.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\kernel.appcore.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
„PRRRT.exe” (Win32): załadowano „C:\Windows\SysWOW64\msvcrt.dll”. Nie można odnaleźć lub otworzyć pliku PDB.
Wątek 0x3d08 zakończył działanie z kodem 0 (0x0).
Wątek 0x2cd0 zakończył działanie z kodem 0 (0x0).
Wątek 0x3460 zakończył działanie z kodem 0 (0x0).
Program „[1396] PRRRT.exe” zakończył działanie z kodem 0 (0x0).
 

 

#include "pch.h"
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <time.h>
#include <ctime>

using namespace std;

int main()
{
	int liczba;
	
	cout << "Wpisz liczbe: ";
	cin >> liczba;

	cout << endl;

	for (int i = 2; i < liczba / 2; i++)
	{
		if (liczba%i == 0)
		{
			cout << "Podana liczba nie jest liczba pierwsza" << endl << endl;
			
			system("pause");
			return 0;
		}
	}

	cout << "Podana liczba jest liczba pierwsza" << endl << endl;
	
	system("pause");
	return 0;
}

 

komentarz 9 września 2019 przez tangarr Mędrzec (154,860 p.)
Co masz na myśli mówiąc bardzo duża liczba.
Typ int ma zakres −2'147'483'648 do 2'147'483'647. Jeżeli chcesz używać większych liczb użyj zmiennej long long, lub unsigned long long.
komentarz 9 września 2019 przez Karpik Użytkownik (680 p.)
Jeśli liczba jest jedenastocyfrowa lub większa.

1 odpowiedź

0 głosów
odpowiedź 9 września 2019 przez tangarr Mędrzec (154,860 p.)

Tak jak pisałem w komentarzu. Musisz użyć zmiennej o większym zakresie.
Zamiast int (32bity) użyj long long (64 bity).
Zanim to zrobisz możesz dla eksperymentu wyświetlić sobie liczbę którą wczytałeś.

komentarz 9 września 2019 przez Karpik Użytkownik (680 p.)
Teraz problem jest przeciwny: kiedy wprowadzę dużo liczbę pierwszą wyświetla się komunikat że to liczba złożona...
komentarz 9 września 2019 przez tangarr Mędrzec (154,860 p.)

Poprawiłeś typ zmiennej i?

Podobne pytania

0 głosów
1 odpowiedź 228 wizyt
0 głosów
0 odpowiedzi 487 wizyt
pytanie zadane 11 października 2021 w C# przez XLR8 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 375 wizyt

92,657 zapytań

141,551 odpowiedzi

319,991 komentarzy

62,026 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...