Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...
 problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox
 Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani
 Ar trebuii sa vindem imobiliarele...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...
 

Factorii unui numar, oglinda unui numar

- - - - -
  • Please log in to reply
15 replies to this topic

#1
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Se da un nr natural citit de la tastatura. Sa se afiseze sub forma de text daca numarul si inversul sau este prim! daca nu sa se afiseze contrar , ex "este" sau "nu_este" . Ca restrictii, problema sa se rezolve doar cu if si while. Eu am ajuns in pctul asta .
#include <iostream>
using namespace std;
int main() {
	int a ;
	cin >> a;
	int a1 = a;
	  int x = 0;
	while ( a > 0 ) {
		x = x * 10 + a % 10 ;
		a = a / 10;
	}
  int i = 2, este_prim = 1;
  while (i < a1) {
	if (a1 % i == 0) {
	  este_prim = 0;
	}
	++i;
  }
  if (a1 == 1) {
	este_prim = 0;
  } while (i < x) {
	if (x % i == 0) {
	  este_prim = 0;
	}
	++i;
  }

  if (x == 1) {
	este_prim = 0;
  }
  if (este_prim == 0) {
	
	cout << "nu_este";
  } else {
	cout << "este";
  }
  
  return 0;
}

Acuma,eu stiu ca nu e ok, fiindca conditia de afisare ar fii fost ca numarul citit si inversul sa fie ambele prime. Nu stiu cum sa leg conditia de amandoua.

Edited by MarianG, 22 March 2022 - 22:43.


#2
DaculScoril0

DaculScoril0

    Senior Member

  • Grup: Senior Members
  • Posts: 6,670
  • Înscris: 03.12.2014

 Irbaa, on 22 martie 2022 - 14:54, said:

Se da un nr natural citit de la tastatura. Sa se afiseze sub forma de text daca numarul si inversul sau este prim! daca nu sa se afiseze contrar , ex "este" sau "nu_este" . Ca restrictii, problema sa se rezolve doar cu if si while. Eu am ajuns in pctul asta .

asta e o problemă tâmpită pentru că a determina dacă un număr e prim sau nu e trivial. Devine foarte repede computational imposibilă dacă o iei pe bâjbâte.

#3
DaculScoril0

DaculScoril0

    Senior Member

  • Grup: Senior Members
  • Posts: 6,670
  • Înscris: 03.12.2014
comentariile unde sunt?
Prima buclă while, de ce trebuie a>0? Când se termină bucla dacă a>0?

Ce algoritm folosești să testezi dacă un număr e prim? Spune-l în cuvinte înainte să încerci să scrii codul.

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Cazuri speciale in care numarul si inversul sunt numere prime
2, 3, 5, 7

In rest, numerele prime au ultima cifra 1, 3, 7 sau 9
asadar poti sa elimi din start (de la prima cifra sau de la ultima cifra) daca sa determini inversul respectiv divizorii.

#5
Powerup

Powerup

    Active Member

  • Grup: Members
  • Posts: 1,124
  • Înscris: 30.04.2017
Eu nu pricep nimic. Scrie domnule o functie pentru a determina daca un nr e prim sau nu pe care o apelezi cand ai nevoie. Si de ce trebuie sa mergi pana la nr ca sa vezi daca e prim, nu e suficient sa mergi pana la nr/2?

Edited by Powerup, 23 March 2022 - 22:48.


#6
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
e destul pana la radacina patrata, doar sunt enspe topicuri in care s-au prezentat diferite metode, unele mai in detaliu decat altele
poate o sa apara un profesor care sa le spuna altceva decat "doar IF si WHILE", dar mai precis "FARA  abecedar"

#7
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Da, am reusit sa o fac .
#include <iostream>
using namespace std;
int main() {
	int a;
	cin >> a;
	int a1 = a;
	int inverse = 0;
	while ( a != 0) {
		inverse = inverse * 10 + a % 10;
		a = a / 10;
	}
	int i = 2 , prim = 1;
	while ( i < a1) {
		if ( a1 % i == 0){
			prim = 0;
		}
	++i;
	}
	int i1 = 2 , prim1 = 1;
	while (i1 < inverse) {
		if ( inverse % i1 == 0) {
			prim1 = 0;
		  
		}
	   ++i1;
	  
	}
	if (a1 == 1) {
		prim = 0 ;
  
	}
	if ( prim == 1 && prim1 == 1) {
		cout << "DA";
	} else {
		cout << "NU";
	}
  
  return 0;
}

Si "Dacul" , daca te referi de ce "while"-u care are ca , conditie de functionare a > 0 , unde am calculat inversul numarului, atunci fara sa te superi pe mine dar mai tampita e observatia ta decat problema. Fiindca acea conditie nu are nevoie decat sa existe pentru a intra in while ! Bucla se va sfarsi de indata ce nu se va mai putea imparti .
Scuze pt dublu topic.

Edited by Dany_Darke, 25 March 2022 - 16:11.


#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Pasi urmatori de studiu/incercare:
  • Tipul de date bool ce poate stoca doar adevarat/fals (in loc sa compari un int cu 0 sau 1)
  • Functii pentru a scrie cod reutilizabil. Daca mai ai un numar de verificat vrei sa repeti a 3-a oara acel while? Dar daca ai 100 de numere de verificat?
  • Cum verifici un numar mai mare daca e prim? Gen 170141183460469231731687303715884105727 sau 53631231719770388398296099992823384509917463282369573510894245774887056120294187907207497192667613710760127432745944203415015531247786279785734596024336383


#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005

 Irbaa, on 25 martie 2022 - 13:16, said:

Si "Dacul" , daca te referi de ce "while"-u care are ca , conditie de functionare a > 0 , unde am calculat inversul numarului, atunci fara sa te superi pe mine dar mai tampita e observatia ta decat problema. Fiindca acea conditie nu are nevoie decat sa existe pentru a intra in while ! Bucla se va sfarsi de indata ce nu se va mai putea imparti .
A naibii matematica, inversul numarului X  poate fi 1/X sau  -X.

 Irbaa, on 25 martie 2022 - 13:16, said:

Scuze pt dublu topic.
parca ti-am spus ceva si despre tag-urile code

Edited by MarianG, 25 March 2022 - 15:57.


#10
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Poi,atata timp cat a > 0 vorbim de numere pozitive! Voiam sa zic ca bucla se va sfarsi cand a va ajunge a = 0. Sa presupunem ca a = 15 . Va intra in while , se va imparti cu 10 si a doua oara va intra in while 1, pe urma 0, nu? Iar 0 nu-i mai mare ca 0 si,deci bucla se sfarseste.

#11
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Ce a vrut sa evidentieze Dacul a fost ca nu stie ce vrei sa faci cand incepi bucla, de aia ai nevoie de comentarii care sa ghideze cititorul, nu neaparat ce face fiecare linie.

#12
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Am inteles. Imi cer scuze atunci.

#13
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Iti ceri scuze dupa ce ne arati ca ai inteles.
Ce se intampla cand operatorul introduce zero, sau chiar un numar negativ ?

#14
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Poi am luat in calcul e 0. Am pus sa afiseze ca e prim, fiindca asa mi-a cerut problma. Iar daca voi introduce un numar negativ imi va afisa de asemenea textul "DA" , adica este prim, orice numar as introduce! Probabil fiindca nu lucrez cu biblioteca potrivita,nustiu exact de ce.

#15
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Si e corect ?
0 si orice numar negativ sunt numere prime ?

#16
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Poi in cazul asta , cand numarul este egal cu 0 atunci vom afisa "NU" . Iar dupa modifiicam putin conditia si adaugam "!= 0 " De ex, in timp ce "i" este mai mic decat a si diferit de 0 totodata.

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate