对于输入 number N
,我试图找到特殊对的数量,(x,y)
以便满足以下条件:
x != y
1 <= N <= 10^50
0 <= x <= N
0 <= y <= N
F(x) + F(y)
是素数,其中F
是数字的所有数字的总和
最后打印计数模 1000000007 的输出
样本输入: 2
样本输出: 2
解释:
- (0,2) 因为
F(0)+F(2)=2
哪个是素数- (1,2) 因为
F(1)+F(2)=3
哪个是素数- (2,1) 不被视为 (1,2) 与 (2,1) 相同
我的代码是:
def mod(x,y,p):
res=1
x=x%p
while(y>0):
if((y&1)==1):
res=(res*x)%p
y=y>>1
x=(x*x)%p
return res
def sod(x):
a=str(x)
res=0
for i in range(len(a)):
res+=int(a[i])
return res
def prime(x):
p=0
if(x==1 or x==0):
return False
if(x==2):
return True
else:
for i in range(2,(x//2)+1):
if(x%i==0):
p+=1
if(p==0):
return (True)
else:
return(False)
n=int(input())
res=[]
for i in range (n+1):
for j in range(i,n+1):
if(prime(sod(int(i))+sod(int(j)))):
if([i,j]!=[j,i]):
if([j,i] not in res):
res.append([i,j])
count=len(res)
a=mod(count,1,(10**9)+7)
print(res)
print(a)
我希望输出是9997260736
,671653298
但错误是代码执行超时。