Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <stdio.h>
- int remain(int a, int div) {
- while (a >= div) {
- a -= div;
- }
- return a;
- }
- int divide(int num, int div) {
- int count = 0;
- while num > 0 {
- num -= div;
- count += 1;
- }
- return count;
- }
- int simple(int num) {
- int flag = 1;
- for (int div = 2; div < (int)sqrt(num) + 1; ++div) {
- flag = remain(num, div) == 0 ? 0 : flag;
- flag = remain(num, divide(num, div)) == 0 ? 0 : flag;
- }
- return flag;
- }
- int max_simp_div(int num) {
- num *= num < 0 ? -1 : 1;
- int result = 0;
- if (simple(num) == 0) {
- for (int i = 2; i < (int)sqrt(num) + 1; ++i) {
- if (remain(num, i) == 0) {
- result = i > result && simple(i) == 1 ? i : result;
- result = divide(num, i) > result && simple(divide(num, i)) == 1 ? divide(num, i) : result;
- }
- }
- } else {
- result = num;
- }
- return result;
- }
- int main() {
- char c;
- double a;
- if (scanf("%lf%c", &a, &c) == 2 && (int)a == a && c == '\n') {
- printf("%d", max_simp_div((int)a));
- } else {
- printf("n/a");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement