求某个数以内的质数

利用python内置函数filter()求从0开始到某个数之间所有的质数:

理解:

题目大意就是,手动键盘输入一个数,求从0到该数之间的质数。

质数:一个数只有1和它本身2个因数的数叫做质数(俗称:素数)。

分析:

算法:

1,去掉1;

2,去掉除2之外所有2的倍数;

3,去掉除3,5,7之外所有3,5,7的倍数

4,剩下的就是质数

Code:

#!/usr/bin/env python

x = raw_input(‘Please enter a number:‘)
x = int(x)

list1 = range(2,x+1)    # 去掉0和1,因为1非质数,也非合数
list2 = [2,3,5,7]    # 10以内的质数直接给出,很简单

def f2(y):
    if y%2 != 0 and y%3 != 0 and y%5 != 0 and y%7 != 0:
        return True
        
list3 = filter(f2,list1)    # 过滤出从11到该数之间的质数
print list2 + list3         # 加上10以内的质数,得到所有0~x之间的质数
时间: 2024-10-25 04:15:40

求某个数以内的质数的相关文章

模板小程序】求小于等于N范围内的质数

xiaoxi666 联系邮箱: [email protected] 博客园 首页 新随笔 联系 订阅 管理 [模板小程序]求小于等于N范围内的质数 1 //筛法求N以内的素数(普通法+优化),N>=2 2 #include <iostream> 3 #include <cmath> 4 #include <vector> 5 using namespace std; 6 ///寻找N以内的质数 7 vector<int> find_Prime(int

C#筛法求出范围内的所有质数

    科普篇:筛法是一种简单检定素数的算法.据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274-194年)发明的,又称埃拉托斯特尼筛法(sieve of Eratosthenes). 说实话,之前我在求质数的场合都是验证某一数是否为质数的,用定义求即可方便的得出结论,代码如下: 01: public static bool IsPrime(int n) 02: {//判断n是否是质数 03: if (n < 2) return false; 04: for (int i =

省赛i题/求1~n内所有数对(x,y),满足最大公约数是质数的对数

求1~n内所有数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数,最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a,y/a)=1;所以我只要枚举i(设i=y/a),再枚举所有质数 他们乘积的f[i*a]值包括i的欧拉函数值.时间复杂度(n*质数个数) #include<iostream> #include<cstring> using namespace std; const int maxx=1

单调队列——求m区间内的最小值

单调队列,顾名思义是指队列内的元素是有序的,队头为当前的最大值(单调递减队列)或最小值(单调递增序列),以单调递减队列为例来看队列的入队和出队操作: 1.入队: 如果当前元素要进队,把当前元素和队尾元素比较,如果当前元素小于队尾元素,那么当前元素直接进队,如果当前元素大于队尾元素,那么队尾出队,将当前元素和新的队尾再做比较,直到当前元素大于队尾元素或者队列为空.单调队列只能在队尾插入元素,队尾和队头都可以删除元素. 2.出队: 出队直接取队头即可,因为用单调队列就是为了取最值,而队头就是最值.

zoj3080 ChiBi --- floyd求连通块内最短路

此题最大最小搞的太复杂...并查集维护连通块,连通块内floyd就可以了 #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #

sql求1到100的质数

有人问怎么求1到100的质数,所以就试着用sql写了个 WITH x1 AS  (SELECT LEVEL + 1 AS id FROM dual CONNECT BY LEVEL <= 99), x2 AS  (SELECT a.id, a.id / b.id AS num FROM x1 a, x1 b WHERE a.id <> b.id) SELECT DISTINCT id   FROM x2  WHERE id NOT IN (SELECT DISTINCT id FROM 

P1886 滑动窗口&amp;&amp;P1440 求m区间内的最小值

单调队列入门题 P1440 求m区间内的最小值 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. 输入输出格式 输入格式: 第一行两个数n,m. 第二行,n个正整数,为所给定的数列. 输出格式: n行,第i行的一个数ai,为所求序列中第i个数前m个数的最小值. 输入输出样例 输入样例#1: 复制 6 2 7 8 1 4 3 2 输出样例#1: 复制 0 7 7 1 1 3 说明 [数据规模

2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)

#include<bits/stdc++.h>using namespace std;const long long mod = 998244353;typedef const long long ll;vector<long long>p;long long inv(long long x,long long y)//快速幂求逆元模板(以乘代除){    long long r=1;    while(y>0)    {        if(y&1)        

使用python求10万内的所有素数的个数

#求10万内的所有素数(9592) print(2) count = 1 for i in range(3,100000): for j in range(2,i): if i%j ==0: break if j==i-1: print(i) 优化: count = 1 for i in range(3,100000,2):#跳过所有偶数 for j in range(2,i): if i%j ==0: break if j==i-1: count +=1 print(count) 再优化: c