Răspuns :
Răspuns:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, d, q, f;
cin >> n;
d=2; q=(int)sqrt(n);
f=1;
while ((d<=q)&&f)
{
f=f&&(n%d); d=d+1;
cout << f << " " << d << "\n";
}
}
Explicație:
Salut! Ca să pricep şi eu ce se întâmplă am creat codul de mai sus şi pentru a înţelege mai bine am adăugat nişte paranteze să se înţeleagă mai bine prioritatea operaţiilor. Răspunsul e că funcţia determină dacă numărul trimis în funcţie e prim sau nu.
Cred prima ce trebuie explicată este
while ((d<=q)&&f)
vezi am adăugat paranteze, deoarece prima operaţie se face &&, care este operaţie logică cu rezultat 0 (pentru false) şi 1 (pentru true).
d este priceput ca divizor şi valoarea din start este 2, iar q este radacina pătrată din n. Fie n=15, adunci d<=q este adevarat, adică 1, şi f=1, deci condiţia lui while este adevărată, se intră în while.
Am ajuns la instrucţiunea pe care ai conturat+o în roşu
f=f&&(n%d);
Aici avem un ŞI logic dintre f şi restul n%d
f era 1, iar dacă restul este 0 (adică d îl divide pe n, ce demonstrează că n nu e prim dacă s-a găsit un divizor până la rădăcina pătrată din el ) atunci rezultatul acestei operaţii va fi 0, care va fi primit de f, şi pentru care condiţia lui while va fi falsă şi evident return f; va întoarce 0, adică n nu e prim
Sper că am fost explicit... Paşte fericit!
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!