判断素数

Python循环语句

回眸只為那壹抹淺笑 提交于 2019-12-26 02:44:20
Python循环语句 循环语句允许我们执行一个语句或语句组多次,Python提供了for循环和while循环(在Python中没有do..while循环) 一、Python while循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假false时,循环结束。 1、简单实例: 运行结果: 9 8 7 6 5 4 3 2 1 0 Over! while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下: 运行结果: 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10 2、无限循环 如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例: 运行结果: Enter a number:3 You entered: 3 Enter a number:9 You entered: 9 Enter a number:0 You entered: 0 Enter a number:

求素数

纵然是瞬间 提交于 2019-12-25 22:19:31
简单遍历: bool isprime(int n) { int s = sqrt( double(n) )+1; //对n开根号 for(int i=2;i<=s;i++) //n除以每个比n开根号小比1大的自然数 if(n%i==0) //如果有能被整除的,则不是质数 return 0; return 1; } 筛法求素数: 筛法求质数,效率最高,但会比较浪费内存   首先建立一个boolean类型的数组,用来存储你要判断某个范围内自然数中的质数,例如,你要输出小于200的质数,你需要建立一个大小为201(建立201个存储位置是为了让数组位置与其大小相同)的boolean数组,初始化为true。   其次用第二种方法求的第一个质数(在此是2),然后将是2的倍数的数全置为false(2除外),即2、4、6、8……位置上置为false。然后是3的倍数的全置为false(3除外),一直到14(14是200的开平方),这样的话把不是质数的位置上置为false了,剩下的全是质数了,挑着是true的打印出来就行了。 #define N 1000 bool isprm[N]; void isprime() { int i,j,k=0; int s,e=sqrt( double(N) )+1; //sqrt是对于double数开平方 memset(isprm,1,sizeof(isprm));

求100之内的素数

倖福魔咒の 提交于 2019-12-25 03:19:28
/** * 【程序27】 * * 题目:求100之内的素数 * * @author James * */ public class 第二十七题求100以内的素数 { public static void main(String[] args) { /* * 思路:素数是指只能被1和自身整除的数 如2,3,5,7等 如果一个n数不能被从2到sqrt(n)的数整除,则为素数 * 把判断素数写为一个方法isPrime() */ System.out.println("100以内的素数有:"); for (int i = 2; i < 100; i++) { if (isPrime(i)) { System.out.print(i + " "); } } } // 判断一个数是否为素数 public static boolean isPrime(int n) { for (int i = 2; i <= Math.sqrt(n); i++) { if (n == 2) { return true; } else if (n % i == 0) { return false; } } return true; } } 来源: https://www.cnblogs.com/zjulanjian/p/10949461.html

求100之内的素数

懵懂的女人 提交于 2019-12-24 23:39:46
题目:求 100 之内的素数 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt( 这个数 ) , 如果能被整除, 则表明此数不是素数,反之是素数。 1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:判断101-200之间有多少个素数,并输出所有素数。 5 * 程序分析:判断素数的方法:用一个数分别去除2得到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 6 * @author yejin 7 */ 8 public class PrimeNumber { 9 public static int count = 0; 10 11 public static void main(String[] args) { 12 for (int i = 101; i < 200; i++) { 13 boolean b = true; // 默认次数是素数 14 for (int j = 2; j < Math.sqrt(i); j++) { 15 if (i % j == 0) { 16 b = false; // 此数不是素数 17 break; 18 } 19 } 20 if (b) { 21 count++; 22 System.out.println(i + ""); 23 } 24 } 25 System

判断素数

本秂侑毒 提交于 2019-12-24 10:47:05
举例:筛选从1—n的所有素数 第一种 暴力判断,无优化。直接根据素数的定义判断即可 # include <stdio.h> int main ( ) { int n = 1000 , flag = 1 ; int prime [ 25 ] = { 0 } ; for ( int i = 2 ; i <= n ; i ++ ) { flag = 1 ; for ( int j = 2 ; j < i ; j ++ ) if ( i % j == 0 ) flag = 0 ; if ( flag ) prime [ i ] ++ ; } for ( int i = 1 ; i <= n ; i ++ ) if ( prime [ i ] ) printf ( "%d\n" , i ) ; } 第二种 素数的倍数一定不是素数,对其进行标记。最后遍历一遍数组,可得未被标记的即为筛选出的素数。 比第一种快了一些,但仍有可以改进的地方,因为在标记的时候有重复标记,因此这个地方也可以再优化一下 # include <stdio.h> int prime [ 1100 ] = { 0 } ; //初始化0,假设全部是素数,标记为0; int main ( ) { int n = 1000 , cnt = 0 ; //cnt计数,表示下标 for ( int i = 2 ; i <= n ; i +

打印6个30以内的素数

独自空忆成欢 提交于 2019-12-23 06:49:29
目的:找出6个30以内的素数 #打印30以内的6个素数(素数:只能被1和它本身整除的整数) #思路:2以外的偶数都不是素数,只判断奇数 print(2) #n是我们要判断是否为素数的变量 n = 3 #count变量用于计算当前有多少素数 count = 1 #is_prime布尔变量,假设所有的数都是素数。判断是否为素数,若不是则改为False is_prime = True while n <= 30: if n % 2 == 0: n += 1 continue #continue后直接回到while循环 #下面是n为奇数,for循环的意义是n不能被其他整数整除,i是2到n-1的所有整数 for i in range(2,n): if n % i == 0: is_prime = False break #break执行时,直接跳出FOR循环 #i遍历完所有的值之后,is_prime的值依旧不变时,则为True,说明当前n为素数 if is_prime == True: print(n) try: count += 1 if count == 6: break except: print("catch the error") else: is_prime = True #继续执行下一次循环,直到count==6或者n>30 n += 1 优化方法: #优化方法 原理

7-5 素数对猜想

你离开我真会死。 提交于 2019-12-22 20:11:09
时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 让我们定义d​n​​ 为:d​n​ =p​n+1​​ −pn​​ ,其中p​i​​ 是第i个素数。显然有d​1​​ =1,且对于n>1有d​n是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N(<10 ​5 ​​ ),请计算不超过N的满足猜想的素数对的个数。 输入格式: 输入在一行给出正整数N。 输出格式: 在一行中输出不超过N的满足猜想的素数对的个数。 输入样例: 20 输出样例: 4 本题可以采用标记法标记出小于n的所有素数的位置,再判断中间间隔一个的素数对有多少 # include <stdio.h> # include <stdlib.h> # include <math.h> int main ( ) { int x [ 100000 ] = { 0 } ; //先初始化为“0”,认为全部为偶数,在进行判断; int n , count = 0 ; int i , j ; scanf ( "%d" , & n ) ; for ( i = 2 ; i <= n ; i ++ ) { for ( j = 2 ; j <= sqrt ( i ) ; j ++ ) //注意由于时间限制只有400ms所以不能用j<=n,否则会超时; if ( i % j == 0 )

python应用-判断回文素数

こ雲淡風輕ζ 提交于 2019-12-21 21:01:07
from math import sqrt number=int(input('请输入一个整数:')) def is_prime(num): for rea in range(2,int(sqrt(num)+1)): if num%rea==0: return False return True if num !=1 else False def is_palindrome(num): temp=num total=0 while temp>0: total=total * 10+temp % 10 temp//=10 return num==total if is_palindrome(number) and is_prime(number) : print('%d是回文素数:' % number) else: print('%d不是回文素数:' % number) 结果: 请输入一个整数:56465 56465不是回文素数:    来源: https://www.cnblogs.com/68xi/p/8546398.html

素数环问题_JAVA实现_回溯法

别来无恙 提交于 2019-12-16 22:09:44
具体说明请看代码中的注释。 个人实现,如有Bug请指正。 /** * @Author = The Great Ke * @description: 素数环问题———— 采用回溯法 * @Date: Creat in 20:01 2019/12/16 * @modified by : */ public class SuShuHuan_Pro { //判断某整数是不是质数 public static boolean isp(int n){ for(int i = 2; i < Math.sqrt(n)+1;i++){ if(n % i == 0){ return false; } } return true; } public static int n = 6; public static boolean[] is_Used = new boolean[n+1];//存储某数是否被使用 public static int[] array = new int[n+1];//存放数列 public static void dfs(int cur){ if(cur == n+1 && isp(array[1]+ array[n]) && array[1] == 1){//如果最后一个数放进去了,并且最后一个数和第一个的和为质数,并且第一个数是1(因为我们只输出开头是1的,避免重复) for

使用迭代器的方法找出素数

泄露秘密 提交于 2019-12-15 22:30:04
问题:自定义一个生成小于某个整数的所有素数的迭代器 class MySuShuIterator(): def __init__(self,start,end): self.__start = start self.__end = end def __iter__(self): return self def __next__(self): for item in range(self.__start,self.__end): if self.isPrime(item): self.__start = item+1 return item raise StopIteration def isPrime(self,item): if item == 1: return False else: for value in range(2,item): if item % value == 0: return False return True 思路: 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。 思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ m的开平方根之间的每一个整数去除就可以了。如果m不能被2~m的开平方根间任一整数整除,m必定是素数。 例如