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之间的素数的主要内容,如果未能解决你的问题,请参考以下文章

c语言求2到100内的素数

用c语言求500到1000的素数

输出50到100所有质数的c语言编程

求1到100以内所有素数之和(c语言)

求100到200的素数

求100到200的素数