WayneShao 的博客

记录精彩的程序人生

【51NOD 刷题】1284 2 3 5 7 的倍数

**1284 2 3 5 7的倍数 **
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。

输入输出

Input
输入1个数N(1 <= N <= 10^18)。
Output
输出不是2 3 5 7的倍数的数共有多少。
Input示例

10

Output示例

1

题目分析

求取1到数字N之间共有多少个数不是2 3 5 7的倍数,只需要求取1到2 3 5 7的最小公倍数210之间不是的个数48,然后再求出1到N / 210之间不是的个数mCount,即可得出最终结果N / 210 * 48 + mCount。

Accepted

using System;

public class Sum
{
    public static void Main()
    {
        var input = Convert.ToInt64(Console.ReadLine());
        var m = input % 210;
        var mCount = 0;
        if (m > 0)
            for (var i = 1; i <= m; i++)
            {
                if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0 || i % 7 == 0)
                    continue;
                mCount++;
            }
        Console.WriteLine(input / 210 * 48 + mCount);
    }
}
留下你的脚步