这是我的代码...这只是考虑了1到100中不是karpekar数的8和88 ...如果条件(s == n)失败
def kaprekarNumbers(p, q):
for i in range(p,q+1):
n=i
m=str(i*i);
sl1=m[:int(len(m)/2)]
sl2=m[int(len(m)/2):]
if(sl2==""):
sl2=0
s=int(sl2)+int(sl2)
print(s==n)
if s==n:
print(i)
答案 0 :(得分:1)
使用字符串处理数字通常不是一个好主意。
您可以通过以下方式获取数字math.ceil(math.log10(n))
的位数:
a
您可以使用以下数字获取数字n
的后n % a
位数字
a
(请参阅:How does % work in Python?)
您可以通过以下方式获取数字n
的前p // (10 ** a)
位数字
INSERT INTO table_b
SELECT DISTINCT ta.Brand, GetDate(), 'Automatic' --use DISTINCT to return unique row
FROM table_a ta
LEFT OUTER JOIN table_b tb on tb.BrandDescription=ta.Brand
WHERE ta.Brand not like '%' + ':' + '%'
AND tb.ID is NULL --check if row exists in table_b
这些对于以10为底的Kaprekar numbers很有用。
[请注意,我没有Python副本可供检查。]