python 刷 leetcode 题目 (19)

204计数质数

统计所有小于非负整数 的质数的数量。

示例:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
思路请参考这篇博客:点击打开链接

按照上面博客的思路:要得到自然数n以内的全部素数,必须把不大于  的所有素数的倍数剔除,剩下的就是素数。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。

代码如下:

class Solution:
    def countPrimes(self, n):
        """
        :type n: int
        :rtype: int
        """
        prime = []
        flag = []
        if n <= 2:
            return 0
        for i in range(n+1):
            if i > 2 and  i % 2 == 0:
                flag.append(1)
            else:
                flag.append(0)
        
        i = 3
        while i*i < n:
            if flag[i] == 0:
                j = i * i
                while j <= n:
                    flag[j] = 1
                    j = j + (i+i)
            i += 2
        prime.append(2)
        
        for x in range(3, n, 2):
            if flag[x] == 0:
                prime.append(x)
        return len(prime)
    

412Fizz Buzz

写一个程序,输出从 1 到 n 数字的字符串表示。

1. 如果 是3的倍数,输出“Fizz”;

2. 如果 是5的倍数,输出“Buzz”;

3.如果 同时是3和5的倍数,输出 “FizzBuzz”。

思路很简单,直接看代码就可以看懂。直接上代码吧。。。

class Solution2:
    def fizzBuzz(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        res = []
        for x in range(1, n+1):
            if x % 3 ==0 and x % 5 != 0:
                res.append("Fizz")
            elif x % 5 ==0 and x % 3 != 0:
                res.append("Buzz")
            elif x % 3 == 0 and x % 5 == 0:
                res.append("FizzBuzz")
            else:
                res.append(str(x))

互相学习,互相指教。

猜你喜欢

转载自blog.csdn.net/annilingmo/article/details/80642281