第18行的3改为101即可,因为如果是for i in range(2,3),则判断完2是否是素数就结束了,改为for i in range(2,101)即判断2到100之间的每一个数。
修改如下:
参考链接:
a=0
for i in range(2,101):
for j in range(2,i):
if i%j==0:
# print("in if ,i=",i,",j=",j)
prime=0
break
else:
# print("i=",i)
a+=i
# https://blog.csdn.net/qq_41373704/article/details/114691918
print(a)
这里为了方便,我打开了我们 python 的 IDLE 的 shell:
首先导入sympy库:
>>> import sympy
然后我们要设一个未知数 x :
>>> x = sympy.Symbol('x')
接下来解方程:
通过移项、合并同类项等等等的一堆步骤后,将方程右边化为0,变成方程左边等于 0 的形式(你也可以直接用-
连接方程两边),然后用solve方法解方程,放入式子和未知数:
>>> sympy.solve((x * (x + 1) * (x + 2) * ((x * (x + 1) * (x + 2)) + 1)) - 3660, x)
当然,也可以解方程组,将方程组和待解的未知数分别用中括号括起来,比如这样:
>>> x = sympy.Symbol('x')
>>> m = sympy.Symbol('m')
>>> e1 = x * (x + 1) * (x + 2) - m
>>> e2 = m * (m + 1) - 3660
>>> sympy.solve([e1, e2], [x, m])
然后,将会返回一个列表,里面就是方程的所有解。
结果……
……这这这……这是什么鬼玩意嘛?!!!看着就头皮发麻
还好,题目说着,a, b 为自然数,所以 x 大于等于 0 且为整数,那么,自然就只有一个答案,即列表的第一项: