京东的某道编程题
大胸弟们能帮忙看看这道题的解法吗?用了暴力求解出倍数,还参照了秋叶拓哉算法书的素数相关的想法,还是只得了10%的分数。现在还是搞不定。
#coding=utf-8 import sys if __name__ == "__main__": # 读取第一行的n n = int(sys.stdin.readline().strip()) flag=[] # 如果flag[i]为True,就代表自然数(i+1)在1~i的范围内中有约数。 for i in range(0,n): flag.append(False) for i in range(1,n+1): flag1=False for k in range(1,int(n/i)): flag[k*i]=True flag1=True if (flag1):flag[i-1]=False #1~n中有i的倍数,设为flag[i-1]为False ans=1 for i in range(0,n): if (flag[i]):ans=ans*(i+1) print(ans%987654321)
#coding=utf-8 import sys if __name__ == "__main__": # 读取第一行的n n = int(sys.stdin.readline().strip()) flag=[] #如果flag[i]为True,就代表自然数(i+1)在1~i的范围内中有约数。 for i in range(0,n): flag.append(True) for k in range(1,n+1): #暴力求解出有1~(k-1)中k的约数,设为False for i in range(1,k-1): if (k%i == 0): flag[i-1]=False ans=1 for i in range(0,len(flag)): if (flag[i] == True): ans = (ans*(i+1)) print (ans%987654321)#笔试题目##京东#