1. Se citesc numere naturale de maxim 6 cifre din fisierul date.in. Afisati in fisierul date.out cele mai mari 2 valori care au suma divizorilor proprii un numar impar. Daca nu sunt 2 numere distincte cu propr ceruta, scrie NU EXISTA.
2.Se citesc numere naturale de maxim 6 cifre din fisierul date.in. Afisati in fisierul date.out cele mai mici 3 valori care au impar de divizori Daca nu sunt 3 numere distincte cu propr ceruta, scrie NU EXISTA.
Va rog dau coroana
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int sumProperDivisors(int n) {
int sum = 0;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum;
}
int main() {
vector<int> numbers;
int number;
ifstream input("date.in");
while(input >> number){
numbers.push_back(number);
}
int max1 = 0, max2 = 0;
for (auto n : numbers) {
int sum = sumProperDivisors(n);
if (sum % 2 != 0) {
if (n > max1) {
max2 = max1;
max1 = n;
} else if (n > max2) {
max2 = n;
}
}
}
ofstream output("date.out");
if (max1 == 0 && max2 == 0) {
output << "NU EXISTA";
} else {
output << max1 << " " << max2;
}
return 0;
}
Sarcina 2
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool hasOddDivisors(int n) {
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0 && i % 2 != 0) {
return true;
}
}
return false;
}
int main() {
vector<int> numbers;
int number;
ifstream input("date.in");
while(input >> number){
numbers.push_back(number);
}
int min1 = INT_MAX, min2 = INT_MAX, min3 = INT_MAX;
for (auto n : numbers) {
if (hasOddDivisors(n)) {
if (n < min1) {
min3 = min2;
min2 = min1;
min1 = n;
} else if (n < min2) {
min3 = min2;
min2 = n;
} else if (n < min3) {
min3 = n;
}
}
}
ofstream output("date.out");
if (min1 == INT_MAX && min2 == INT_MAX && min3 == INT_MAX) {
output << "NU EXISTA";
} else {
output << min1 << " " << min2 << " " << min3;
}
return 0;
}