Witam, z kolega robiliśmy pewne zadanie o treści:
Napisz program, który czyta dwie liczby naturalne A, B (2 ≤ A, B ≤ 10000000) i wypisuje wszystkie
liczby pierwsze, które są podzielnikami obydwu liczb. (Każdy podzielnik powinien być wypisany
tylko raz i liczby wypisujemy od najmniejszej do największej.)
Na przykład dla liczb
900 260
program powinien wypisać
2 5
ponieważ 900 = 2 ∙ 2 ∙ 3 ∙ 3 ∙ 5 ∙ 5, 260 = 2 ∙ 2 ∙ 5 ∙ 13.
I chyba wszystko nam dobrze wyszło bo działa prawidłowo :)
oto kod:
#include <iostream>
#include <iomanip>
using namespace std;
int pierwsza(int a)
{
for (int i=2;i*i<=a;i++)
if (a%i==0) return 0;
return 1;
}
int main()
{
int A,B,min;
cin>>A;
cin>>B;
if (A<B)min=A;
else min=B;
for (int i=2;i*i<=min;i++)
if (pierwsza(i)==1 && A%i==0 && B%i==0) cout<<i<<" ";
//system("pause");
return 0;
}
Ale teraz mamy drugie zadanie w pewien sposób jest ono takie same ale nie wiemy co zmienić w pierwszym zadaniu aby dobrze działało :)
Oto treść drugiego zadania :
Napisz program, który czyta dwie liczby naturalne N, M (0 ≤ N, M ≤ 1000000) i wypisuje, ile jest
liczb pierwszych w przedziale obustronnie otwartym (|N-M|; N+M).
Na przykład dla liczb
5 7
program powinien wypisać 4, ponieważ w przedziale (2; 12) znajdują się cztery liczby pierwsze: 3,
5, 7, 11.
Uwaga: Liczby 0 i 1 nie są liczbami pierwszymi.
Z góry bardzo dziękuje za odpowiedź :)