Решение задачи №1228 «Сумма простых чисел» с ACMP
Условие задачи
Простым числом называют натуральное число, у которого ровно два различных натуральных делителя. Другими словами, число является простым, если оно больше единицы и делится нацело только на себя и на единицу.
Дано три целых числа. Требуется определить, какие из заданных чисел являются простыми, и вычислить их сумму. Также требуется проверить, является ли полученная сумма простыми числом.
При решении данной задачи необходимо реализовать функцию IsPrime(N), которая возвращает N, если N – простое число, и 0 – иначе.
Входные данные
Входной файл INPUT.TXT содержит три целых числа, не превосходящие 1000 по абсолютной величине.
Выходные данные
В первой строке выходного файла OUTPUT.TXT выведите сумму, составленную из простых чисел во входных данных. Если таковых чисел нет, выведите 0. Во второй строке выведите «Yes», если полученная сумма – простое число, и «No» – в противном случае.
Решение на C++
#include <iostream>
using namespace std;
int IsPrime(int n)
{
if(n<2)return 0;
int k=n/2;
while (n%k)k--;
return(k>1)?0:n;
}
main()
{
int a,b,c,s;
cin>>a>>b>>c;
s=IsPrime(a)+IsPrime(b)+IsPrime(c);
cout<<s<<endl;
cout<<((IsPrime(s))?"Yes":"No");
}
Условия задач взяты с сайта acmp.ru