鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 8

  [复制链接]
发表于 2017-8-23 10:55:29 | 显示全部楼层
print("----------判断101-200之间有多少个素数----------")

count = 0

for i in range(101,200):
    flag = 0
    for j in range(2,int(i**0.5)+1):
        if i % j == 0:   #如果不是素数
            flag = 1
        

    if flag == 0:
        count += 1
        print(i)

print("101-200之间有 %d 个素数" %count)


有一个问题想请教一下,我想在第一次判断出不是素数后就不再for循环了,这个有什么办法?我在flag=1后加break有效吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 23:17:11 | 显示全部楼层
import math

# True: the number is prime; False: the number is not prime
def JudgePrimeNumber(number):
    sqrt_number = int(math.sqrt(number))
    for i in range(2, sqrt_number + 1):
        if number % i == 0:
            return False
    return True

print "Prime number is: "

for i in range(101, 201):
    if JudgePrimeNumber(i) == True:
        print i,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-14 15:44:16 | 显示全部楼层
count = 0
for i in range(101,200):
        tmp = 0
        for j in range(2,i):
                if i%j == 0:
                        tmp = 1
                        break
        if tmp == 0:
                print(i,end = ' ')
                count += 1
                if count == 10:
                        print()
                        count = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-14 20:47:40 | 显示全部楼层
temp=[]
count=0
for i in range(101,201):
    flag=0
    for j in range(2,i):
        if i%j==0:
            # 判断不是素数
            flag=1
            break
    if flag==0:
         count+=1
         temp.append(i)
print('101-200之间有%d个素数'%count)
print(temp)
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-15 00:20:53 | 显示全部楼层
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#判断101-200之间有多少个素数,并输出所有素数。
#判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
#1.先判断101是不是素数

import math
a = 101
sushunum = 0
while a <= 200:
    x = int(math.sqrt(a))
    n = 2
    while n <= x:
         if a % n == 0:
                break
         else:
                n = n+1
    if n == x + 1:
        print a, "是素数"
        sushunum += 1
    a += 1
print "101-200之间的素数的个数为",sushunum
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-23 16:31:21 | 显示全部楼层
import math

for x in range(101,200):
    m = int(math.sqrt(x))
    for i in range(2,m+1):
        if x % i ==0:
           break
    else:
        print(x)

想看看大佬们用一行写完
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-23 19:39:59 | 显示全部楼层
import math
for i in range(101,200):
    for j in range(i//2,math.ceil(math.sqrt(i)),-1):
        if i%j == 0:
            break
    else:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-27 15:11:11 | 显示全部楼层
result = set()
for i in range(101,201):
    for j in range(2,i):
        if i % j == 0:
            result.add(i)

for i in range(101,201):
    if i not in result:
        print(i,end=' ')

print('\n一共有%s个素数。' % (100-len(result)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-5 22:24:34 | 显示全部楼层
学习使用for 语句中break和continue用法
# -*-coding:gbk-*-
__author__ = 'chennan'
import math as m
def issushu(x,y):
    list1=[]
    for s in range(x,y+1):
        for i in range(2,int(m.sqrt(s))+1):
            if s%i == 0:
                break
            if i != int(m.sqrt(s)):
                continue
            else:
                list1.append(s)
    return list1

Ss=issushu(101,200)
for i in Ss:
    print(i)
count=len(Ss)
print("总共%s个素数"%count)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 14:38:42 | 显示全部楼层
import math
a = [i for i in range(101,201)]
b = []
for i in range(101,201):
    for j in range(2,int(math.sqrt(i)) + 1):
        if i % j == 0:
            b.append(i)
            break
c = set(a) - set(b)
print(len(c),sorted(c))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 17:34:49 | 显示全部楼层
from math import sqrt
def prime(n):
    for i in range(2,int(sqrt(n)) + 1):
        if n % i == 0:
            return 'a'
    return n
b = []
for n in range(101,201):
    a = prime(n)
    b.append(a)
while 'a' in b:
    b.remove('a')
print(len(b),b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-11 16:25:58 | 显示全部楼层
这应该很简单啊,为什么需要那么多代码
'''题目:判断101-200之间有多少个素数,并输出所有素数。'''
def isPrime(n):
    try:
        for i in range(2, n):
            if n % i == 0:
                return False
        return True
    except TypeError:
        exit()
for i in range(100, 200):
    if isPrime(i) == True:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-27 23:27:41 | 显示全部楼层
本帖最后由 david_van 于 2017-11-27 23:31 编辑
import math
l = []#存放素数
for i in range(101,201):
    #temp = math.sqrt(i)//1 + 1#此处写错了,应该为
    temp = int(math.sqrt(i))+1#此处int()是向下取整数
    for j in range(2,temp):
        if i%j == 0:
            break
        if j == temp-1:
            l.append(i)
print(l)
print('The total is %d' % len(l))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-17 16:08:51 | 显示全部楼层
def isPrime(low,up):
    new=[]
    for i in range(low,up+1):
        fig=0
        for j in range(2,i):
            if i%j==0:
                fig=1
                break
            
        if fig==0:
            new.append(i)
    print(new,len(new))

           
isPrime(101,200)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-17 17:11:32 | 显示全部楼层
def z(a):
        for i in range(2,a // 2):
                if( a % i ==0):
                        return False
                if( i == a//2 - 1):
                        return True

for i in range(100,1000):
        if(z(i)):
                print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-27 21:04:44 | 显示全部楼层
'''题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。'''
import math
list1=[]
list2=[]
for x in range(1,100):
    for i in range(2,30):
        for j in range(2,100):
            if(i*j==x):
                list1.append(x)
    if(len(list1)==0):#i,j从2开始,如果除了1和x本身他还有别的因子,那么它就不再是素数,在这里
        list2.append(x)
    list1=[]
print(list2)

[1, 2, 3, 5, 7, 11, 13, 17...]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 13:44:05 | 显示全部楼层
import math
susu = []
for each in range(101,200):
                blank = 1
                for xeach in range(2,int(math.sqrt(each))):
                                if each % xeach == 0:
                                                blank = 0
                if blank == 1:
                                susu.append(each)
print('是素数的有:',susu)
运行结果是:
是素数的有: [101, 103, 107, 109, 113, 121, 127, 131, 137, 139, 143, 149, 151, 157, 163, 167, 169, 173, 179, 181, 191, 193, 197, 199]
虽然做出来了但仍然不理解为什么要除到sqrt()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 15:33:36 | 显示全部楼层
import math
list1 = []
for i in range(101,201):
        n = 1
        for j in range(2,int(math.sqrt(i))+1):
                if i % j == 0:
                        n = 0
                        break                
        if n:
                list1.append(i)
print(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-16 08:55:27 | 显示全部楼层
import math

for i in range(101, 201):
    b = 0
    j = 2
    for j in range(2, int(math.sqrt(i))):
        a = i % j
        if a == 0:
            b += 1
    if b == 0:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-18 16:09:16 | 显示全部楼层
#【程序9】  题目:判断101到200间有多少个素数,输入所有素数

a=1
for i in range(101,201):
    for j in range(2,i):
        if i%j==0:
            break
        if j+1==i:
            a+=1
            print(i)
print('共有%s个素数。'%a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表