鱼C论坛

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

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

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

  2. count = 0

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

  9.     if flag == 0:
  10.         count += 1
  11.         print(i)

  12. print("101-200之间有 %d 个素数" %count)
复制代码



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

使用道具 举报

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

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

  9. print "Prime number is: "

  10. for i in range(101, 201):
  11.     if JudgePrimeNumber(i) == True:
  12.         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 | 显示全部楼层
  1. import math

  2. for x in range(101,200):
  3.     m = int(math.sqrt(x))
  4.     for i in range(2,m+1):
  5.         if x % i ==0:
  6.            break
  7.     else:
  8.         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 | 显示全部楼层
  1. result = set()
  2. for i in range(101,201):
  3.     for j in range(2,i):
  4.         if i % j == 0:
  5.             result.add(i)

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

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

使用道具 举报

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

  15. Ss=issushu(101,200)
  16. for i in Ss:
  17.     print(i)
  18. count=len(Ss)
  19. 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 | 显示全部楼层
  1. from math import sqrt
  2. def prime(n):
  3.     for i in range(2,int(sqrt(n)) + 1):
  4.         if n % i == 0:
  5.             return 'a'
  6.     return n
  7. b = []
  8. for n in range(101,201):
  9.     a = prime(n)
  10.     b.append(a)
  11. while 'a' in b:
  12.     b.remove('a')
  13. print(len(b),b)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-11-27 23:27:41 | 显示全部楼层
本帖最后由 david_van 于 2017-11-27 23:31 编辑
  1. import math
  2. l = []#存放素数
  3. for i in range(101,201):
  4.     #temp = math.sqrt(i)//1 + 1#此处写错了,应该为
  5.     temp = int(math.sqrt(i))+1#此处int()是向下取整数
  6.     for j in range(2,temp):
  7.         if i%j == 0:
  8.             break
  9.         if j == temp-1:
  10.             l.append(i)
  11. print(l)
  12. 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 | 显示全部楼层
  1. def z(a):
  2.         for i in range(2,a // 2):
  3.                 if( a % i ==0):
  4.                         return False
  5.                 if( i == a//2 - 1):
  6.                         return True

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

使用道具 举报

发表于 2018-1-27 21:04:44 | 显示全部楼层
  1. '''题目:判断101-200之间有多少个素数,并输出所有素数。
  2. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。'''
  3. import math
  4. list1=[]
  5. list2=[]
  6. for x in range(1,100):
  7.     for i in range(2,30):
  8.         for j in range(2,100):
  9.             if(i*j==x):
  10.                 list1.append(x)
  11.     if(len(list1)==0):#i,j从2开始,如果除了1和x本身他还有别的因子,那么它就不再是素数,在这里
  12.         list2.append(x)
  13.     list1=[]
  14. 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 | 显示全部楼层
  1. import math
  2. list1 = []
  3. for i in range(101,201):
  4.         n = 1
  5.         for j in range(2,int(math.sqrt(i))+1):
  6.                 if i % j == 0:
  7.                         n = 0
  8.                         break               
  9.         if n:
  10.                 list1.append(i)
  11. print(list1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2. for i in range(101, 201):
  3.     b = 0
  4.     j = 2
  5.     for j in range(2, int(math.sqrt(i))):
  6.         a = i % j
  7.         if a == 0:
  8.             b += 1
  9.     if b == 0:
  10.         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, 2024-3-29 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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