Project Euler 37

本文提供了一个Python脚本,用于找出指定范围内的素数,并检查这些素数的数字特性,例如其各位数字是否也构成素数。代码通过优化的算法减少计算复杂度,同时通过循环和条件判断实现对素数的识别和进一步的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几题为毛线都是prime……

嗯……这题也不难,直接数出来素数,枚举……


def sss(n):
	a = [1 for i in range(n)]
	a[0], a[1], a[2] = 0, 0, 1
	pl = []
	t = s = 0
	for i in range(2,n):
		if a[i]:
			s+=i
			pl.append(i)
			j=i*i
			t+=1
			while j<n:
				a[j]=0
				j+=i
	return pl, a

def main():
	prime, f = sss(1000000)
	#print(prime)
	sum = 0
	for i in prime:
		x = i;
		t = 1
		while x>0:
			if not f[x]:
				t = 0
				break
			x //= 10
			
		if t:
			x = i
			length = len(str(x))
			while length>=0:
				if not f[x]:
					t = 0
					break
				x %= 10**length
				length -= 1
		if t:
			print(i)
			sum += i
	
	print(sum)

if __name__ == '__main__':
	main()

着实要注意的就是 x /= 10 和 x //= 10的区别……前者这是在产生小数,后者则是整除,像c里面一样。


看了一下效果……我的代码真单薄……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值