python中如何编程求1到100之间的素数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何编程求1到100之间的素数相关的知识,希望对你有一定的参考价值。
1、新建python文件,testprimenum.py;
2、编写python代码,求1到100之间的素数;
list1 = []
i = 2
for i in range(2,101):
j = 2
for j in range (2,i):
if i%j == 0:
break
else:
list1.append(i)
print(list1)
3、窗口中右击,选择‘在终端中运行Python文件’;
4、查看执行结果,1-100之间的素数为:
[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]
参考技术A#!/usr/bin/python
#-*- coding:UTF-8 -*-
#求素数
list=[]
i=2
for i in range (2,100):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
list.append(i)
print(list)
扩展资料:
python:for语句的使用方法
for循环的语法格式:
for i in range(n):#从数据类型中拿一个值赋值给i
print(i)#打印i
例如:
#for
for i in range (1,6,2):#从一开始到六之前每隔上2个数字
print(i)#结果为1,3,5
# ------------------------------------------------
s = ["man", "woman", "girl", "boy", "sister"]
for i in s:#列表s中的每个元素给i
print(i)
#-------------------------------------------------
for i in range(5):
print(i)#结果为:0,1,2,3,4
for循环实例:数字0,1,2组成一个百位数,并且数字不重复!
#for
for i in range(0,3):
for j in range(0,3):
for k in range(0,3):
if (i != 0) and (i != j) and (i != k) and (j != k):
print (i,j,k)
参考技术B def primes(x):# prepair data space
plist = [0, 0] + range(2,x+1)
for i in xrange(2, x):
if plist[i]:
plist[i+i::i] = [0] * len(plist[i+i::i])
return filter(None, plist)
print primes(100)
筛选法是高效的素数列表计算算法, python的列表切片赋值可以极大地简化代码
参考技术C result=[]for i in range(2,101):
for j in range(2,i):
if i%j==0
break
else:
result.append(i)
print(result)
求1到200之间的素数
public class Test5 { public static void main(String[] args) { int j; for(int i= 2;i<=200;i++){ j=2; while (i%j!=0){ j++; if(i==j){ System.out.println(i); } } } } }
自己的思想存在误区,受冒泡排序影响过甚
冒泡排序
public class demo{ public static void main(String[] args) { int[] numbers =new int[]{1,5,8,2,3,9,4}; int i ,j; for(i=0;i<numbers.length;i++){ for(j=0;j<numbers.length-1-i;j++){ if(numbers[j]<numbers[j+1]){ int tem = numbers[i]; numbers[j]=numbers[j+1]; numbers[j+1]=temp; } } } System.out.println("从大到小排序后的结果是:"); for(i=0;i<numbers.length;i++) System.out.print(numbers[i]+" "); } }
冒泡排序,总之遍历外层,然后相邻的数字两两比较,然后定制交换规则,两两交换,主要注意j的条件j<numbers.length-1-i即可
对于该题找出素数
错误思想的代码
public class Test8 { public static void main(String[] args) { for (int i=1;i<201;i++){ for(int j=1;j<i;j++){ if(i%j!=0){ System.out.println(i); } } } } }
输出一连串1到200的数,且有重复。
思想如果一个数从1到200,然后这个数除以从2到该数本身-1,如果整除没有0,则该数为素数。
后来仔细想了以下,如果i =6的时候,那么j可以为1到5,然后能让6除以1到5之间的数并且没有余数的只有当j=4,j=5的时候,所以会输出两次6。
所以这种遍历不合理,应该是当遍历到1-5的时候,当遍历到2的时候已经不满足条件,这个时候应该直接摒弃6,i的值+1,而不是再继续遍历,这样总会有不能整除的数,导致输出不是素数的6.
重新审视正确答案
外层依然遍历从2到200的数,内存循环换成while循环,while循环条件依然为i%j!=0,当满足这个条件之后,才可以j++,然后当i==j的时候,这个时候才可以输出i。
for循环和while循环的适用性(如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是根据循环体的执行情况确定的,一般用while语句或者do-while语句。)
注意赋值j要在外层循环下赋值,如果一开始直接int j=2;
以上是关于python中如何编程求1到100之间的素数的主要内容,如果未能解决你的问题,请参考以下文章