Liczby Pierwsze

NO
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:15
0

Męcze się jakiś czas ale wymyslilem sobie tak: Jeżeli np. 5/4!=5 dalej 5/3!=5 dalej 5/2!=5 dalej 5/1 to już sie równa 5 tzn ze jest to liczba pierwsza i jeżeli tą wartość mi wzraca to należy wyświetlić TAK: Oto mój kod tylko mam problem z 2 pętlą nie wiem co wstawić obok X. W sensie wstawiam tam liczbaTestow[i] ale cos jest nie tak daleczego ?

Kopiuj
#include <iostream>

using namespace std;

int main()
{
    int liczbaTestow[100000],n, x;

    cout<<"Podaj ile testow chcialbys przeprowadzic ?: "<<endl;
    cin>>n;

    for(int i=0; i<n; i++)
{
    cout<<"podaj dowolna liczbe calkowita: "<<endl;
   cin>>liczbaTestow[i];
}
//!juz lepiej ale kombinuj dalej !
for (int i=0; i<n; i++)
{

  for(int x=1; x<=**Co tu wstawic zeby było dobrze?**; x++)
  {
      if(liczbaTestow[i]/liczbaTestow[i]-x!=liczbaTestow[i])
      {
          cout<<"nie";
      }
          else
          {
            cout<<"tak";
          }

  }
}
        return 0;
}
edytowany 4x, ostatnio: Shalom
MarekR22
nie da się czytać bo pytanie jest napisane od poły treści. Autor zakłada, że na forum są telepaci. Wiadomo tylko, że chce testować pierwszość liczb, ale dokładnie po co i co ma być wynikiem to nie wiadomo.
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

W ogóle nie rozumiem co piszesz. 4! to 24, jak 5 / 24 ma być równe 5?

NO
Nie chodzi o silnie, przeczytaj post ponizej
NO
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:15
0
twonek napisał(a):

W ogóle nie rozumiem co piszesz. 4! to 24, jak 5 / 24 ma być równe 5?

Nie nie oto chodzi to nie jest silnia tylko "różne'' równa się przekreslone na pół ;)

NO
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:15
0

Chce żeby program robił to w ten sposób: Pyta się ile chce tych liczb wprowadzić przypuśćmy że chce 3, Następnie wpisuje te liczby. I teraz tak wpisałem jako pierwszą liczbę np 7 i chcę żeby sprawdził czy to jest liczba pierwsza. Jak moge to sprawdzic ? Otóż jeżeli 7 podziele o liczbę jedną mniejszą od niej i pózniej znów jeszcze mniejsza aż tak wkółko do uzykania 7 podzielić na 1 jeżeli miedzy czasie nie wyskoczyła mi jakaś inna liczba całkowita to znaczy że jest to liczba pierwsza przypuśćmy 4:3 jest różne od 4 pózniej 4:2 =2 wiec komputer wyświetla napis NIE, następnie bierzę kolejną liczbę jaka wprowadziliśmy np 5 i robi podobnie 5:4 jest różne od 5 dalej 5:3 jest różne od 5, 5:2 jest rózne od 5 i 5:1=5 więc to jest liczba pierwsza. Wyswietla NAPIS TAK

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 8 godzin
0

A nie prościej i szybciej zacząć od 2 i skończyć na liczbie mniejszej lub równej pierwiastkowi z badanej? Zainteresuj się tzw sitem.

NO
zainteresuje sie, ale chciałbym dokonczyc w ten sposob. Wiesz chciałbym coś zrobić od początku do konca. Skoro zaczałem w ten sposób to chciałbym ciągnać ten watek dalej
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
1

To nie zadziała, bo jeśli masz dwie liczby całkowite, to wynik dzielenia zawsze będzie liczbą całkowitą.
5 / 4 = 1
5 / 3 = 1
5 / 2 = 2
To czego potrzebujesz to modulo % a nie dzielenia.
Czyli w wersji najprymitywniejszej

Kopiuj
for (int i = 2; i < liczba; ++i)
    if (liczba % i == 0)
        return "NIE";
return "TAK";
kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:6 dni
  • Lokalizacja:Łódź
  • Postów:1402
1

Do tego co napisał @twonek sprawdzanie czy dzieli się przez liczby wieksze niz pierwiastek z liczby też nie ma sensu


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
2

Pójdźmy krok dalej (wystarczy sprawdzić co 2 liczbę).

Kopiuj

#include <iostream>
#include <cmath>
using namespace std;

string czypierwsza(int liczba) {
	if (liczba % 2 == 0) 
       return "NIE";	
       
    int limit = sqrt(liczba) + 1;
    
	for (int i = 3; i < limit; i += 2)
	    if (liczba % i == 0)
	        return "NIE";
	        
	return "TAK";
}

int main() {
	do {
		cout << "Podaj liczbe: \n";
		int liczba;
		if (!(cin >> liczba)) 
		   break;
		cout << liczba << " - pierwsza?: " << czypierwsza(liczba) << endl;
	} while(1);
    return 0;
}

https://ideone.com/rvFByc

(jest jeszcze wielokrotnie bardziej optymalna wersja, ale to już nie sito - sprawdzanie tylko liczb pierwszych przy pomocy liczb pierwszych które już były).

edytowany 2x, ostatnio: vpiotr

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.