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# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;


namespace debug
{
    class Program
    {
        static void Main(string[] args)
        {
            ProgramB a = new ProgramB();
            a.main();

        }
    }

    //ABC096
    class ProgramA
    {
        public void main()
        {
            string[] s = Console.ReadLine().Split(' ');
            int a = int.Parse(s[0]);
            int b = int.Parse(s[1]);

            Console.WriteLine((a -1)*(b-1));
        }
    }

    class ProgramB
    {
        public void main()
        {
            int n = int.Parse(Console.ReadLine());

            int ans = 0;
            for (int i = 1; i <= n; i = i + 2)
            {
                int count = 0;
                for (int j = 1; j < Math.Sqrt(i);j++)
                {
                    if(i % j == 0)
                    {
                        if (i == j * j)
                            count++;
                        else
                            count += 2;
                    }
                }

                if (count == 8)
                    ans++;
            }

            Console.WriteLine(ans);
            

        }
    }

    class ProgramC
    {
        public void main()
        {
            long n = long.Parse(Console.ReadLine());
            string[] xi = Console.ReadLine().Split(' ');

            long[] a = new long[n];

            for (int i = 0; i < n; i++)
                a[i] = long.Parse(xi[i]);

            //ソートする
            Array.Sort(a);

            //
            for (int i = 0; i < n; i++)
            {
                if (a[n / 2 - 1] >= long.Parse(xi[i]))
                    Console.WriteLine(a[n / 2]);
                else
                    Console.WriteLine(a[n / 2 - 1]);
            }
            
            

        }
    }

    class ProgramD
    {
        public void main()
        {
            long n = long.Parse(Console.ReadLine());
            string[] xi = Console.ReadLine().Split(' ');

            long[] a = new long[n];

            for (int i = 0; i < n; i++)
                a[i] = long.Parse(xi[i]);

            //ソートする
            Array.Sort(a);

            //最大値候補
            long sum = a[n - 1] / 2;

            //二分探索
            long min = -1;
            long max = n;
            while(min + 1 != max)
            {
                long temp = (min + max) / 2;
                if (a[temp] <= sum)
                    min = temp;
                else
                    max = temp;
            }

            if(min == -1)
            {
                Console.WriteLine(a[n - 1] + " " + a[0]);
                return;
            }

            if (min == n - 2)
            {
                Console.WriteLine(a[n - 1] + " " + a[n - 2]);
                return;
            }

            if (sum - a[min] < a[max] - sum)
                Console.WriteLine(a[n - 1] + " " + a[min]);
            else
                Console.WriteLine(a[n - 1] + " " + a[max]);

        }

    }

    

}