Другие языки программирования и технологии
помогите пожалуйста. решите задачу (функции) в с++
Вводится последовательность целых чисел, 0 – конец последовательности. Найти, каких чисел в последовательности больше - простых или совершенных (функцией оформить проверку числа: результатами функций будет: 1 – число простое, 0 – число непростое; 1 – число совершенное, 0 - нет).
#include <iostream>
using namespace std;
unsigned simple(unsigned);
unsigned perfect(unsigned);
int main() {
locale::global(locale(""));
unsigned number, s = 0, p = 0;
do {
cout << " Число: ";
cin >> number;
s += simple(number);
p += perfect(number);
} while (number);
if (!(s + p)) cout << " В последовательности нет совершенных и простых чисел";
else if (!s) cout << " В последовательности нет простых чисел";
else if (!p) cout << " В последовательности нет совершенных чисел";
else if (s > p) cout << " В последовательности простых чисел больше чем совершенных";
else if (p > s) cout << " В последовательности совершенных чисел больше чем простых";
else cout << " В последовательности одинаковое количество простых и совершенных чисел";
cout << endl;
cin.get(); cin.get();
return 0;
}
unsigned perfect(unsigned _number) {
switch (_number) {
case 6: _number = 1; break;
case 28: _number = 1; break;
case 496: _number = 1; break;
case 8128: _number = 1; break;
case 33550336: _number = 1; break;
default: _number = 0;
}
return _number;
}
unsigned simple(unsigned _number) {
unsigned x = 1;
if (_number < 2) x = 0;
else {
for (unsigned n = 2; n <= _number / 2; n++) {
if (!(_number % n)) {
x = 0;
break;
}
}
}
return x;
}
using namespace std;
unsigned simple(unsigned);
unsigned perfect(unsigned);
int main() {
locale::global(locale(""));
unsigned number, s = 0, p = 0;
do {
cout << " Число: ";
cin >> number;
s += simple(number);
p += perfect(number);
} while (number);
if (!(s + p)) cout << " В последовательности нет совершенных и простых чисел";
else if (!s) cout << " В последовательности нет простых чисел";
else if (!p) cout << " В последовательности нет совершенных чисел";
else if (s > p) cout << " В последовательности простых чисел больше чем совершенных";
else if (p > s) cout << " В последовательности совершенных чисел больше чем простых";
else cout << " В последовательности одинаковое количество простых и совершенных чисел";
cout << endl;
cin.get(); cin.get();
return 0;
}
unsigned perfect(unsigned _number) {
switch (_number) {
case 6: _number = 1; break;
case 28: _number = 1; break;
case 496: _number = 1; break;
case 8128: _number = 1; break;
case 33550336: _number = 1; break;
default: _number = 0;
}
return _number;
}
unsigned simple(unsigned _number) {
unsigned x = 1;
if (_number < 2) x = 0;
else {
for (unsigned n = 2; n <= _number / 2; n++) {
if (!(_number % n)) {
x = 0;
break;
}
}
}
return x;
}
тут на вопросы отвечают а не делают бесплатно за кого-то работу
Похожие вопросы
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- Помогите пожалуйста решить задачу С++
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Помогите пожалуйста решить задачу в Pascal ABC
- Помогите пожалуйста решить задачу в паскале.