#include #include using namespace std; long long Factorial(int a){ if(a == 1) return 1; else return a * Factorial(a-1); } long long Prime(int a){ if(a == 1)return 0; for(int i = 2;i<=sqrt(a);i++){ if(a%i == 0) return 0; } return 1; } long long OddEven(int a){ return (a%2 == 0)?1:0; } long long Operate(int a, long long (*fp)(int)){ return (*fp)(a); } int main() { int op,in; bool flag=true; cout << "Function Pointer" <> op; if(op == 4){ break; }else{ cin >> in; switch(op){ case 1: cout << Operate(in,Factorial) << endl; break; case 2: if(Operate(in,Prime) == 0) cout << "Not Prime" <> op; if(op == 4){ return 0; }else{ cin >> in; switch(op){ case 1:{ auto fact = [in](){ int res = 1; for(int i=2; i<=in; i++){ res*=i; } return res; }; cout << "Result : " << fact() << endl; break; } case 2:{ auto prime = [in](){ if(in == 1) return 0; for(int i = 2;i<=sqrt(in);i++){ if(in%i == 0) return 0; } return 1; }; cout << (prime() == 0 ? "Not Prime" : "Prime") << endl; break; } case 3:{ auto even = [in](){ return in % 2 == 0 ? 1 : 0; }; cout << (even() == 1 ? "Even" : "Odd") << endl; break; } } } }while(flag); }