python中fib_99乘法表,菱形,fib,素数(python)

一.打印99乘法表

#打印99乘法表

for i in range(1,10): #[1,9]

for j in range(1,i+1): #通过对角线分析可以知道,i>=j ,所以范围是[1,i]

# 控制输出格式,向左对齐,如果j=1 ,宽度为2,否则宽度为3

print('{}*{}={:

print()

99乘法表.png

打印方向99乘法表

#方法一

for i in range(1,10): # [1,9]

for j in range(1,10):

if j >= i: # [i,10] ,打印乘法表

print("{}*{}={:

else : #如果i > j 补空格,[1,i)

print("{} {} {:

print()

反99乘法表.png

#方法二

for i in range(1,10):#[1,9]

s = "" # 定义一个空字符串

for j in range(i,10): #[i,10]

#将输出拼接为一行的字符串

s += '{}*{}={:

#讲整行字符串右对齐,宽度是75

print("{:>75}".format(s))

反99乘法表.png

二.打印菱形

#打印菱形

#方法一

n = 7

for x in range(-(n//2),n//2+1):#[-3,3]

if x < 0:

y = -x

else:

y = x

print(y*' '+(n-2*y)*'*')

菱形.png

#打印菱形

#方法二,坐标建模,菱形的范围就在|x|+|y|< n//2+1

n = 7

for x in range(n//2,-(n//2+1),-1): #[3,-3]

print(abs(x)*' ',end='')

for y in range(-(n//2),(n//2)+1):#[-3,3]

if abs(x)+abs(y)

print('*',end='')

print()

菱形.png

#打印对顶三角形

n = 7

for x in range(-(n//2),n//2+1):

y = -x if x <= 0 else x #三元表达式

print((n//2-y)*' '+(2*y+1)*'*')

对顶三角形.png

#打印闪电

n = 7

for x in range(-(n//2),n//2+1):

if x == 0:

print(n*'*')

elif x < 0:

print(-x*' '+(n//2+1+x)*'*')

else:

print(n//2*' '+(n//2+1-x)*'*')

闪电.png

三. 斐波那契数列

斐波那契数列F(0) = 0 , F(1) = 1, n > 1, F(n) = F(n-1) + F(n-2)

#打印100以内的斐波那契数列

#第0项

a = 0

#第1项

b = 1

print(0 ,1,end=' ')

while True:

c = a + b

a,b = b,c

if c > 100:

break

print(c , end=' ')

100以内fib数.png

#求斐波那契数列第101项

a = 0

b = 1

for i in range(2,102): #[2,101]

c = a + b

a,b = b,c

print(c)

fib第101项.png

四.求10万内的所有素数

假设a>=b

m = a*b >= b^2

a >= m **0.5

b <= m **0.5

因为如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到,合数m 一定有小于或者等于m的平方根的因数,所以只要验证素数的除数的范围只需其平方根。

第一种方法:

import time

start = time.clock()

number = 100000

count = 1

print(2,end=' ')

#除了2以外,所有素数都是奇数

for num in range(3,24,2):

flag = True

for i in range(2,int(num**0.5)+ 1):

m = num % i

if m == 0 :

flag = False

break

else:

flag = True

if flag:

count += 1

print(num, end=' ')

for num in range(25,number,2):

##大于6的质数除以6,余数都是1或者5

if num % 6 != 1 and num % 6 != 5:

continue

else :

flag = False

for i in range(5,int(num**0.5 + 1),6):

if ( not num % i ) or ( not num % (i+2) ):

flag = False

break

else:

flag = True

if flag :

print(num, end= ' ')

count += 1

print()

print(count)

end = time.clock()

time = end - start

print(time)

第二种方法

import time

start = time.clock()

count = 2

print(2, end=' ')

print(3, end=' ')

number = 100000

for num in range(5,number,2):

#大于6的质数除以6,余数都是1或者5

if num % 6 != 1 and num % 6 != 5:

continue

else :

flag = False

if num < 30 :

for i in range(3,num,2):

if not ( num % i ):

flag = False

break

else:

flag = True

else:

for i in range(5,int(num**0.5 + 1),6):

if ( not num % i ) or ( not num % (i+2) ):

flag = False

break

else:

flag = True

if flag :

print(num, end= ' ')

count += 1

print()

print(count)

end = time.clock()

time = end - start

print(time)

#打印10万以内的素数

#第三种方法

n = 100000

#除了2 以外的素数,都是奇数

count=1

print(2,end=' ')

for i in range(3,n,2):

flag = False

if i > 10 and i % 5 == 0 :

continue

for j in range(3,int(i**0.5)+1,2):

if i % j == 0:

break

else:

print(i,end=' ')

count += 1

print()

print(count)

总共9592个,最后一项是99991

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值