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

Zadanie Prime_T

Object Storage Arubacloud
0 głosów
148 wizyt
pytanie zadane 3 grudnia 2018 w C i C++ przez dqq Nowicjusz (120 p.)
edycja 3 grudnia 2018 przez dqq

Witam 

 

mój kod nie przechodzi w SPOJ, teoretycznie wszystko jest według mnie dobrze,
komunikat to błędny wynik
 

 

#include <iostream>
using namespace std;
bool czy(int x){
	int l=0;
	if (x<2)
	{
	cout<<"nie"<<endl;
	}
	else 
	{
		for(int i=2; i<x;i++)
		{
			if (x%i==0)
			{
				l++;
			}
		}
		if (l==0){
			cout<<"tak"<<endl;
		}
		else 
		cout<<"nie"<<endl;
	}
	
}
int main() {
	
	int l;
	cin >> l;
	int a[l];
	
	for(int i=0; i<l ; i++){
		cin>> a[i];
	}
	
	for(int b=0;b<l;b++)
	{
		czy(a[b]);
	}
	


	

	return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 3 grudnia 2018 przez PanRik Gaduła (4,510 p.)
for(int i=2; i<x;i++)
        {
            if (x%i==0)
            {
                l++;
            }
        }
        if (l==0){
            cout<<"tak"<<endl;

Nie rozumiem po co ta zmienna l ( chodzi mi o linijkę 4), która można bardzo łatwo pomylić z 1, a po drugie zmienna nie jest zainicjalizowana, więc to jest jakiś śmieć z pamięci

Z liczbami pierwszymi jest tak, że jeżeli:
 

if (x%i==0)

to będzie prawdą to wiemy, że liczba już nie jest pierwsza.

komentarz 3 grudnia 2018 przez dqq Nowicjusz (120 p.)

dlatego zmienna jest równa 0 i gdy doda sie w tym 

 if (x%i==0)
            {
                l++;
            }

to wiemy że nie jest pierwsza, wiec jeśli jest 

if (l==0){
            cout<<"tak"<<endl;

to jest pierwsza

komentarz 3 grudnia 2018 przez PanRik Gaduła (4,510 p.)

Strasznie na około :D.

To w takim razie jak zrobisz w 4linijce:
 

int l = 0;

to powinno być okej, aczkolwiek ciekawe czy czasowo da to radę.

komentarz 3 grudnia 2018 przez dqq Nowicjusz (120 p.)
No właśnie kurde ciągle nie przechodzi i jest że błędna odpoiwedz :/
komentarz 3 grudnia 2018 przez PanRik Gaduła (4,510 p.)
W opisie jest , że odpowiedź tak/nie powinna być dużymi literami( TAK / NIE ) ,sprawdź ;>.
0 głosów
odpowiedź 3 grudnia 2018 przez criss Mędrzec (172,590 p.)
Zmienna l (linia 4) powinna być zainicjalizowana do 0.
komentarz 3 grudnia 2018 przez dqq Nowicjusz (120 p.)
czyli że po prostu = 0 ?
komentarz 3 grudnia 2018 przez criss Mędrzec (172,590 p.)
Tak, teraz ma niezdefiniowaną wartość (może to być cokolwiek) i to powoduje nieprawidłowy wynik zliczania
komentarz 3 grudnia 2018 przez dqq Nowicjusz (120 p.)
Właśnie nie, bo normalnie wyliczało, a gdy przypisałem jej 0 to ciagle nie przyjmuje
komentarz 3 grudnia 2018 przez criss Mędrzec (172,590 p.)
No słuchaj, to że u ciebie było 0, to nie znaczy że na SPOJ tez będzie 0 XD Anyway - nawet jesli wciąż nie działa, to to też był problem. Btw. twój kod jest niezoptymalizowany do granic możliwości. Po pierwsze wystarczy, że będziesz sprawdzał podzielność do sqrt(x), a nie aż do x-1. Po drugie, możesz przerwać pętle w momencie gdy znajdziesz pierwszy dzielnik.

Innych błędów nie widze. Obstawiam źle sformatowany output po prostu.
komentarz 3 grudnia 2018 przez dqq Nowicjusz (120 p.)
na spoj też było 0 jakby co, ale wystarczyło zmienić nie -> NIE i tak -> TAK i zadziałało

thanks from the mountain

Podobne pytania

0 głosów
2 odpowiedzi 520 wizyt
pytanie zadane 2 marca 2017 w C i C++ przez piter11251 Obywatel (1,280 p.)
+1 głos
3 odpowiedzi 2,431 wizyt
pytanie zadane 19 czerwca 2016 w Java przez Darek Surdel Początkujący (380 p.)
+1 głos
1 odpowiedź 503 wizyt
pytanie zadane 19 lipca 2020 w C i C++ przez Arek04 Użytkownik (700 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 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!

...