7.寻找素数

定义:除了1 和本身之外,不被任何数整除。 7 = 7*1   是     9 = 3*3 不是

代码:

 1 #!/usr/bin/env python
 2 # encoding: utf-8
 3 """
 4 @author: 侠之大者kamil
 5 @file: 8.素数.py
 6 @time: 2016/4/9 18:25
 7 """
 8 import math
 9 def isPrimeNumber(n,s):
10     #for k in range(2,int(math.sqrt(n)) + 1):
11     for k in s:#s为小于n的素数的集合
12         if k * k > n:break#保证k 小于n的平方根,for k in range(2,int(math.sqrt(n)) + 1)
13         if n % k ==0 : return None #
14     return n
15 prime=[]
16 for n in range(2,300):
17     res = isPrimeNumber(n,prime)
18     if res:
19         prime.append(res)
20 print(prime)

结果:

ssh://[email protected]:22/usr/bin/python3 -u /home/kamil/py22/趣味百题/8.素数.py
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293]

Process finished with exit code 0
时间: 2024-10-01 06:57:30

7.寻找素数的相关文章

数组拷贝、数组函数、通过数组函数来模拟数据结构的栈和队列、回调的意义、数组函数的排序问题、算法以及寻找素数的筛选法

1.数组的拷贝数组拷贝时指针的指向问题. 数组在拷贝时,指针的位置随之复制[这一点拷贝是完全一样]但是如果拷贝的数组的指针是非法的,那么拷贝出新指针的位置进行初始化<?php$arr1=array('123');end($arr1);next($arr1);//这个指针非法$arr2 = $arr1;//这里进行数组的拷贝var_dump(current($arr2));//得到指向‘123’元素的指针var_dump(current($arr1));//此时这个数组的指针有问题?> 但是拷贝

计算机程序的构造和解释 1.21 寻找素数因子

寻找素数因子 要求用书中的smallest-divisor过程找出199, 1999, 19999的最小因子. Scheme Code: 主要流程: 定义寻找素数的过程 如果2的平方即4,大于测试值,那么它肯定是素数 如果n能和2整除,那么不是素数,最小因子是2 如果不是,回到过程find-div,再试试能不能与2+1整除,循环 #lang racket (define (square x) (* x x)) ;定义筛选 (define (smallest-div n) (find-div n

寻找所有的素数的python实现

寻找所有的素数的python实现 寻找素数也是一个在学习python的一个简单题目.涉及到的知识点是:python内置函数filter()的应用. 思路如下: 在全部自然数中,先取出素数2,然后过滤掉以2为因子的所有数(因为这些数都不是素数)得到新的序列 然后在新序列中取出素数 3,然后过滤掉以3为因子的所有数得到一个新的序列 然后在新序列中去除第一个数,然后过滤掉以这个数为因子的所有数. 按上面的步骤做下去即可取出所有的数 实现代码如下: #coding=UTF-8 #寻找所有的素数 def

筛法求素数

筛法求素数,寻找素数最经典快速的方法!!! 用筛法求素数的基本思想是: 把从1开始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下的数中选择最小的数是素数,然后去掉它的倍数.依次类推,直到筛子为空时结束.如有: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1不是素数,去掉.剩下的数中2最小,是素数,去掉2的倍数,余下的数是: 3 5 7 9 11 13 1

素数判定(给你两个数a、b,现在的问题是要判断这两个数组成的区间内共有多少个素数)

1 #include<stdio.h> 2 #include<math.h> 3 int func(int x)//自定义函数实现寻找素数功能 4 { 5 int i, flag = 1; 6 for (i = 2; i <= (int)sqrt((float)x); i++) //取到平方根就好,(float)x,强制将int x型转化成float型,再将平方根转化为int型 7 { 8 if (x%i == 0) //是合数,则标记 9 flag = 0; 10 } 11

关于素数的快速查找——素数筛选法

利用素数筛选法进行素数的快速查找.原理很简单,素数一定是奇数,素数的倍数一定不是素数.思路如下: 预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行标记,奇数存为1,偶数存为0,最终实现结果为素数的prime值为1,因此将prime[2]赋值为1(2是素数).之后利用for循环,对N以内的奇数进行遍历(注意for循环的条件控制),for里用if判断是否为素数(奇数),若是,执行内部嵌套的for循环判断该奇数是否为素数,若是则标记为1,若不是则pri

c语言:实现对于给定的正整数N,依次打印出小于等于N的所有素数。两种方法及其优化

请编写一个程序,实现对于给定的正整数N,依次打印出小于等于N的所有素数. 方法一:试除法 由素数的定义得到如下程序: #include<stdio.h> int print_prime(int num)//prime表示素数 { int i = 0; for (i = 2; i <= num; i++) { int j = 0; for (j = 2; j < i; j++) { if (i%j == 0) { break; } } if (i==j) { printf("

素数环 与 算法 全排列

在说起全排列前,先说一下昨天碰到的一个题目(答案不是我做出来的,但是我感觉有好多个亮点,贴出来方便日后的学习): 素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简便起见,我们规定每个素数环都从1开始.例如,下图就是6的一个素数环. 输入 有多组测试数据,每组输入一个n(0<n<20),n=0表示输入结束. 输出 每组第一行输出对应的Case序号,从

素数求解方法及其优化

题目: 请实现一个函数,对于给定的整型参数N,依次打印出小于N的素数. 解法一:试除法 由素数的定义我们很自然的会想到如下代码: #include <stdio.h> void print_prime(int n) { int i=0; for(i=2;i<=n;i++) { int j=0; for(j=2;j<i;j++) { if(0==i%j) break; } if(j==i) printf("%d\t",i); } } int main() { in