Problem:
Score: 200 points

Problem Statement

The number 105 is quite special - it is odd but still it has eight divisors.
Now, your task is this: how many odd numbers with exactly eight positive divisors are there between 1 and N (inclusive)?

Constraints

N is an integer between 1 and 200 (inclusive).

Input

Input is given from Standard Input in the following format:

N

Output

Print the count.

Sample Input 1

105

Sample Output 1

1

Among the numbers between 1 and 105, the only number that is odd and has exactly eight divisors is 105.

Sample Input 2

7

Sample Output 2

0

1 has one divisor. 3, 5 and 7 are all prime and have two divisors. Thus, there is no number that satisfies the condition.

Solution in C (Clang 3.8.0) (judge verdict: Wrong Answer)

#include <stdio.h>
int checka(int),checkb(int);
int main() {
    int n,count = 0;
    scanf("%d",&n);
    for(int i = 1;i <= n;i += 2) {
        int check = 0;
        if(i == 128) count += 1;
        else if(checka(i) == 1) count += 1;
        else if(checkb(i) == 1) count += 1;
    }
    printf("%d\n",count);
    return 0;
}

int checka(int i) {
    int prime[5] = {3,5,7,11,13};
    for(int j = 0;j < 5;j++) {
        if(i%(prime[j]*prime[j]*prime[j]) == 0) {
            int nokori = i/(prime[j]*prime[j]*prime[j]);
            if(nokori != prime[j] && (nokori == 3 || nokori == 5 || nokori == 7)) {
                printf("%d\n",prime[j]);
                return 1;
            }
        }
    }
    return 0;
}

int checkb(int i) {
    int prime[5] = {3,5,7,11,13};
    for(int j = 0;j < 5;j++) for(int k = j + 1;k < 5;k++) {
        if(i%(prime[j]*prime[k]) == 0) {
            int nokori = i/(prime[j]*prime[k]);
            if(nokori != prime[j] && nokori != prime[k] && (nokori == 3 || nokori == 5 || nokori == 7 || nokori == 11 || nokori == 13)) {
            printf("%d %d\n",prime[j],prime[k]);
            return 1;
            }
        }
    }
    return 0;
}