蓝桥杯素数(二)

文章目录

  • P1125 [NOIP2008 提高组] 笨小猴
    • 分析
    • 代码
      • 通过截图
  • 质数
    • 分析
    • 代码(一个很普通的方法)
      • 通过截图
    • 代码(埃筛法)
      • 通过截图

P1125 [NOIP2008 提高组] 笨小猴

蓝桥杯素数(二)_第1张图片

分析

  • 这个我直接用Counter计数器做方便快捷。利用Counter计数器进行统计,统计完直接遍历字典的值即可。最大值和最小值肯定会大于等于1,所以最小值初值设成0,由于字符串长度小于100,所以最大值初值设为100。

代码

import math
from collections import Counter
def is_prime(n):
    if n == 1 or n == 0:
        return False
    m = int(math.sqrt(n)+1)

    for i in range(2,m):
        if n % i == 0:
            return False
    return True


s = input()
s_dic = Counter(s)
Max = 0
Min = 100
for i in s_dic.values():
    if i > Max:
        Max = i
    if i < Min:
        Min = i

if is_prime(Max-Min):
    print("Lucky Word")
    print(Max-Min)
else:
    print("No Answer")
    print(0)

通过截图

蓝桥杯素数(二)_第2张图片

质数

题目描述
给定一个正整数 N,请你输出 N 以内(不包含 N)的质数以及质数的个数。

输入描述
输入一行,包含一个正整数 N。 1≤N≤1000

 
输出描述
共两行。

第 1 行包含若干个素数,每两个素数之间用一个空格隔开,素数从小到大输出。

第 2 行包含一个整数,表示N以内质数的个数。

输入输出样例
示例
输入

10

输出

2 3 5 7
4

运行限制
最大运行时间:1s
最大运行内存: 128M

分析

  • 第一种方法就不说了就是简单的遍历到根号n查询
  • 第二种方法比较有意思叫埃筛法,比如我有一个1到n的序列,1不是质数不用加入,2是质数加入,筛掉范围内2的倍数,3是质数加入,筛掉范围内所有三的倍数。以此类推。注意:这种方法耗费了大量的空间换取了时间,因为建立了flag数组,所以一般只适用于10的7次方的规模。(可能有更好的可以节省空间的写法,但我不会)

代码(一个很普通的方法)

import math

def is_prime(n):
    if n == 1 or n == 0:
        return False
    m = int(math.sqrt(n)+1)

    for i in range(2,m):
        if n % i == 0:
            return False
    return True


n = int(input())
res = []
for i in range(1,n):
    if is_prime(i):
        res.append(i)

for i in res:
    print(i,end=" ")
print()
print(len(res))

通过截图

蓝桥杯素数(二)_第3张图片

代码(埃筛法)

import math

def set_prime(n):
    flag = [True for i in range(n+1)] # 创建n个标记,False:非质数,True:质数
    prime_list = [2]
    # 存质数
    for i in range(3,n,2): # 创建奇数数列,提前筛掉了2
        if flag[i]:
            prime_list.append(i)
            for j in range(i*2,n+1,i):
                if j % i == 0:
                    flag[j] = False
    return prime_list


n = int(input())
res = set_prime(n)
for i in res:
    print(i,end=" ")
print()
print(len(res))

通过截图

蓝桥杯素数(二)_第4张图片
如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ

你可能感兴趣的:(蓝桥杯,算法,蓝桥杯,算法,排序算法)