目录
方法一:
思路是大于2的素数除以2到比他本身小1的数都除不尽,即进行了(素数值-2)次余数不为0的运算,统计这种运算次数
缺点是这种方法要手动添加2这个素数
代码如下:
data1=[] count=1 #相当于手动加上了2 sum=2 #因为此方法算不了2 for i in range(3,1001): #3到1000之间的数 for j in range(2,i): #被除数要比除数小1,且大于等于2 if i%j !=0: #可能是素数,3%2!=0,3是素数,但4%3!=0,4不是素数 data1.append(i) if len(data1) == i-2: #用余数不为0的长度;如果是素数,data1中i的次数比i小2,例如5除以2、3、4都除不尽,data1中会有3个5 count+=1 sum+=i data1=[] #每一轮的i把j算完后要恢复空表格,以便计算下一轮 print(count,sum)
方法二:
思路是素数除以1或它本身,这两种情况可得到余数为0
这种方法比较简洁
代码如下:
sum=0 count=0 for i in range(2,1001): lst=[j for j in range(1,i+1) if i%j==0] #用余数为0来判别 if lst==[1,i]: #用素数除以1到i的余数只有1和i count+=1 sum+=i print(count,sum)
总结
理解素数的含义后发现单单用循环套循环玩不了,故引入列表,并寻找可以实现的素数的规律