Se citeşte de la tastatură un număr natural par. Sa se decida dacă acesta poate fi scris ca şi suma de două numere prime şi sa se afişeze toate soluţiile găsite (se va considera ca şi 1 este număr prim). (Conjectura lui Goldbach: “Orice număr par mai mare decat 2 este suma a două numere prime.”).
Analiza Programului
Cream o metoda cu ajutorul careia vom verifica numerele care sunt prime si ne vom folosi de Conjectura lui Goldbach.
Rezolvarea in C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _17 { class Program { static void Main(string[] args) { int number, firstNumber, secondNumber = 0; Console.Write("Introduceti numarul: "); number = int.Parse(Console.ReadLine()); //iteratie doar pentru numerele impare for (firstNumber = 1; firstNumber <= number / 2; firstNumber = firstNumber + 2) { //verifica daca primul numar este prim if (CheckPrimeNumber(firstNumber)) { //calculeaza al doilea numar secondNumber = number - firstNumber; //verifica daca al doilea numar este prim if (CheckPrimeNumber(secondNumber)) Console.WriteLine("Numarul par {0} este suma numerelor prime {1} + {2}", number, firstNumber, secondNumber); } } } //verifica daca numarul este prim static bool CheckPrimeNumber(int number) { //presupunem ca un numar este prim bool prime = true; //contor int i = 2; //verifica daca numarul este divizibil cu numerele cuprinse intre 2 si jumatatea lui while (i <= number / 2) { //daca are divizor if (number % i == 0) prime = false; i += 1; } return prime; } } }
Rezolvarea in C++
//the header conio, which include library functions for performing "console input and output" #include <conio.h> //the header iostream, which supports the C++ I/O system #include <iostream> //tells the compiler to use the std namespace using namespace std; bool CheckPrimeNumber(int number) { //assume the number is prime bool prime = true; //counter int i = 2; //check while(i <= number/2) { if(number % i == 0) prime = false; i += 1; } return prime; } //begin program execution int main() { int number, firstNumber, secondNumber = 0; cout<<"Introduceti numarul:"; cin>>number; for (firstNumber = 1; firstNumber <= number / 2; firstNumber = firstNumber + 2) { if (CheckPrimeNumber(firstNumber)) { secondNumber = number - firstNumber; if (CheckPrimeNumber(secondNumber)) cout<<number<<" = "<<firstNumber<<" + "<<secondNumber<<endl; } } return 0; }
Category: Uncategorized