zhangjinxuan 发表于 2023-1-8 15:17:46

能不能在 1 秒, 10兆内存,代码10kb以内100%判断long long范围的数是不是质数?

本帖最后由 zhangjinxuan 于 2023-1-8 15:54 编辑

能的话给出代码

禁止打表!!!

tommyyu 发表于 2023-1-8 15:27:40

正在写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()

zhangjinxuan 发表于 2023-1-8 15:30:40

tommyyu 发表于 2023-1-8 15:27
正在写

啊,啊,啊?

zhangjinxuan 发表于 2023-1-8 15:34:34

tommyyu 发表于 2023-1-8 15:27
正在写

long long

tommyyu 发表于 2023-1-8 15:35:33

zhangjinxuan 发表于 2023-1-8 15:34
long long

为什么代码要在10k以内啊{:10_266:}

tommyyu 发表于 2023-1-8 15:39:47

zhangjinxuan 发表于 2023-1-8 15:38
每一次的输出至少50字节,输出2147483648是多少字节?

这是多少兆?


我现在的代码应该已经有几千万行了{:10_282:}

hveagle 发表于 2023-1-8 15:50:52

10k=10000啊

tommyyu 发表于 2023-1-8 15:53:34

有一种更好的打表方法,大概只需要67108864个long long变量就可以打表long long范围的正整数

jhq999 发表于 2023-1-8 16:49:15

给你们一个样例
9223372036854775783

KeyError 发表于 2023-1-8 16:55:28

tommyyu 发表于 2023-1-8 15:27
正在写

这里是C/C++交流专区,请不要写Python。

Mike_python小 发表于 2023-1-8 17:05:01

KeyError 发表于 2023-1-8 16:55
这里是C/C++交流专区,请不要写Python。

楼主说不让写了?{:10_312:}

C丁洞杀O 发表于 2023-1-8 17:07:37

额,可以,但是很难,首先如果使用库的话,本身就要加入许多的内存,27kb(<_<)就是一个输出程序就要,2.14 MB,你要自己用汇编写输出输入程序的话可以(<_<)

人造人 发表于 2023-1-8 17:10:55

我不打表,我查别人的表,^_^
因为要访问网络,用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$

zhangjinxuan 发表于 2023-1-8 17:12:46

人造人 发表于 2023-1-8 17:10
我不打表,我查别人的表,^_^
因为要访问网络,用C++也不是很好整,这里用python了

我真的服了{:10_282:}

如果这就是一道编程题,怎么办呢?

人造人 发表于 2023-1-8 17:14:16

zhangjinxuan 发表于 2023-1-8 17:12
我真的服了

如果这就是一道编程题,怎么办呢?

我想这题考的是你的数学知识,我数学不好,^_^

zhangjinxuan 发表于 2023-1-8 17:14:51

人造人 发表于 2023-1-8 17:14
我想这题考的是你的数学知识,我数学不好,^_^

也许是的,我网上搜搜?

zhangjinxuan 发表于 2023-1-8 17:15:36

KeyError 发表于 2023-1-8 16:55
这里是C/C++交流专区,请不要写Python。

随便吧,毕竟只要不用一些奇奇怪怪的模块,还是可以转换成C++的

zhangjinxuan 发表于 2023-1-8 17:24:20

人造人 发表于 2023-1-8 17:14
我想这题考的是你的数学知识,我数学不好,^_^

网上的都不100%准确

人造人 发表于 2023-1-8 17:25:23

zhangjinxuan 发表于 2023-1-8 17:24
网上的都不100%准确

这我就没办法了

zhangjinxuan 发表于 2023-1-8 17:29:08

人造人 发表于 2023-1-8 17:25
这我就没办法了

估计以我的电脑,这道题根本无解
页: [1] 2 3
查看完整版本: 能不能在 1 秒, 10兆内存,代码10kb以内100%判断long long范围的数是不是质数?