能不能在 1 秒, 10兆内存,代码10kb以内100%判断long long范围的数是不是质数?
本帖最后由 zhangjinxuan 于 2023-1-8 15:54 编辑能的话给出代码
禁止打表!!! 正在写def is_prime(x):
if x != 0 and x != 1:
for i in range(2, int(x**0.5)+1):
if not x%i:
return f'{x}不是质数!'
return f'{x}是质数!'
f = open('prime.cpp', mode='w')
f.write('''#include <iostream>
using namespace std;
int main() {''')
53
f.write('''
int n;
cin >> n;
switch(n) {
''')
for i in range(2147483648):
f.write(f' case {i}:\n')
f.write(f' cout << "' + is_prime(i) + '";\n')
f.write(f' break;\n')
if not i % 100000: print(i)
f.write('''\
}
return 0;
}''')
f.close()
tommyyu 发表于 2023-1-8 15:27
正在写
啊,啊,啊? tommyyu 发表于 2023-1-8 15:27
正在写
long long zhangjinxuan 发表于 2023-1-8 15:34
long long
为什么代码要在10k以内啊{:10_266:} zhangjinxuan 发表于 2023-1-8 15:38
每一次的输出至少50字节,输出2147483648是多少字节?
这是多少兆?
我现在的代码应该已经有几千万行了{:10_282:} 10k=10000啊 有一种更好的打表方法,大概只需要67108864个long long变量就可以打表long long范围的正整数 给你们一个样例
9223372036854775783 tommyyu 发表于 2023-1-8 15:27
正在写
这里是C/C++交流专区,请不要写Python。 KeyError 发表于 2023-1-8 16:55
这里是C/C++交流专区,请不要写Python。
楼主说不让写了?{:10_312:} 额,可以,但是很难,首先如果使用库的话,本身就要加入许多的内存,27kb(<_<)就是一个输出程序就要,2.14 MB,你要自己用汇编写输出输入程序的话可以(<_<) 我不打表,我查别人的表,^_^
因为要访问网络,用C++也不是很好整,这里用python了
sh-5.1$ ls
main.py
sh-5.1$ cat main.py
#!/usr/bin/env python
#coding=utf-8
import requests, re
import time
def prime(n: int) -> bool:
url = r'https://zh.numberempire.com/primenumbers.php'
data = {'number': f'{n}'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.56 Safari/537.36'}
response = requests.post(url, headers = headers, data = data)
pattern = rf'数字.*?{n}.*?不是质数'
if re.search(pattern, response.text): return False
pattern = rf'数字.*?{n}.*?是质数'
if re.search(pattern, response.text): return True
raise "未查询到结果"
time.sleep(0.5)
print(12, prime(12))
time.sleep(0.5)
print(13, prime(13))
time.sleep(0.5)
print(0xffffffffffffffff, prime(0xffffffffffffffff))
time.sleep(0.5)
print(0x1ffffffffffffff0, prime(0x1ffffffffffffff0))
sh-5.1$ ./main.py
12 False
13 True
18446744073709551615 False
2305843009213693936 False
sh-5.1$
人造人 发表于 2023-1-8 17:10
我不打表,我查别人的表,^_^
因为要访问网络,用C++也不是很好整,这里用python了
我真的服了{:10_282:}
如果这就是一道编程题,怎么办呢? zhangjinxuan 发表于 2023-1-8 17:12
我真的服了
如果这就是一道编程题,怎么办呢?
我想这题考的是你的数学知识,我数学不好,^_^
人造人 发表于 2023-1-8 17:14
我想这题考的是你的数学知识,我数学不好,^_^
也许是的,我网上搜搜? KeyError 发表于 2023-1-8 16:55
这里是C/C++交流专区,请不要写Python。
随便吧,毕竟只要不用一些奇奇怪怪的模块,还是可以转换成C++的 人造人 发表于 2023-1-8 17:14
我想这题考的是你的数学知识,我数学不好,^_^
网上的都不100%准确 zhangjinxuan 发表于 2023-1-8 17:24
网上的都不100%准确
这我就没办法了
人造人 发表于 2023-1-8 17:25
这我就没办法了
估计以我的电脑,这道题根本无解