找回密码
 欢迎注册
楼主: 无心人

[原创] BPSW和QFT素性检验算法执行时间比较

[复制链接]
发表于 2023-5-4 11:06:49 | 显示全部楼层
无心人 发表于 2023-5-4 10:47
同样增加一次基3强伪素数测试的BPSW

我当初问***他素数判定的实现算法,***把他的算法当成宝贝,还舍不得告诉我。
没想到你也能实现这个算法,要是早知道,我就问你了。
只可惜你在论坛上发出来之前,我已经学会了BPSW的实现算法,
我从GitHub上搜索到相关的代码,然后研究透的!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-5-4 11:44:50 | 显示全部楼层
作为比较,贴上flint自带素性测试的代码,执行时间60.261s
考虑我代码少做一次基2测试,加上基2测试,以QFT为例,是30.948秒,

  1. #include <stdbool.h>
  2. #include <stdio.h>
  3. #include <stdint.h>
  4. #include <stdlib.h>
  5. #include <flint/ulong_extras.h>

  6. int main()
  7. {
  8.   uint64_t p, cnt = 0, tst = 0;
  9.   //test();
  10.   FILE* sprp2File = fopen("2-SPRP-2-to-64.txt", "r");
  11.   if (!sprp2File)
  12.   {
  13.     perror("文件2-SPRP-2-to-64.txt不存在");
  14.     return EXIT_FAILURE;
  15.   }
  16.   char line[32];
  17.   while (fgets(line, 32, sprp2File) != NULL)
  18.   {
  19.     char* end;
  20.     p = strtoull(line, &end, 10);
  21.     if (n_is_prime(p))
  22.       cnt ++;
  23.     tst ++;
  24.   }

  25.   fclose(sprp2File);
  26.   printf("test: %lu, failed: %lu\n", tst, cnt);
  27.   return 0;
  28. }

复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-4 13:30:53 | 显示全部楼层
无心人 发表于 2023-5-4 11:44
作为比较,贴上flint自带素性测试的代码,执行时间60.261s
考虑我代码少做一次基2测试,加上基2测试,以QF ...

你的伪素数文件,能上传共享一下不?
要那种以2为底的强伪素数!

点评

已经贴出来了  发表于 2023-5-4 18:02
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-4 18:53:02 | 显示全部楼层
无心人 发表于 2023-5-4 11:44
作为比较,贴上flint自带素性测试的代码,执行时间60.261s
考虑我代码少做一次基2测试,加上基2测试,以QF ...

只要以2为底的强伪素数!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-5 09:18:30 | 显示全部楼层
即使是以2位底的强伪素数,也有633.1M吗?还是太大了!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-5 09:19:33 | 显示全部楼层
老外真是闲的没事干,居然2^64以下的伪素数都找出来,计算资源可真多,就是不知道他们素数判定算法怎么搞的(在找2^64以下的伪素数的时候)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-15 13:15:39 | 显示全部楼层
国外有开源的大整数算法库,比hugecalc还要快很多!我要是没试过,我都不敢相信。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-15 13:20:56 | 显示全部楼层
无心人 发表于 2023-5-4 10:47
同样增加一次基3强伪素数测试的BPSW
1次SLPSP测试约等于3.8次SPSP测试


用SLPSP的优点是可以进行lucas U+Lucas V+一次半强伪素数

具体见下面的代码!
https://bbs.emath.ac.cn/forum.ph ... 3&fromuid=14149

我都是开源的,但是我不敢说“原创”

点评

你选择lucas测试的参数与BPSW不同  发表于 2023-5-17 16:59
nyy
一次lucas U+一次Lucas V+一次欧拉伪素数测试  发表于 2023-5-15 15:15
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-5-17 17:03:52 | 显示全部楼层
nyy 发表于 2023-5-15 13:20
用SLPSP的优点是可以进行lucas U+Lucas V+一次半强伪素数

具体见下面的代码!

另外,二次域Frobenius测试和Lucas序列测试,虽然都是基于二次型,但是重要区别是即使最弱形式,二次域Frobenius测试,只要保证选择的参数 z 不是某个形如 a + bi 的复整数(a, b都是整数,且其中一个是0)的平方根,就不存在伪素数

点评

形如 a + bi 的复整数(a, b都是整数,且其中一个是0)的平方根,会导致测试退化到 Fermat 素性测试的形式  发表于 2023-5-17 17:05
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-5-17 23:06:58 | 显示全部楼层
无心人 发表于 2023-5-17 17:03
另外,二次域Frobenius测试和Lucas序列测试,虽然都是基于二次型,但是重要区别是即使最弱形式,二次域Fr ...

原创????

点评

没能力原创,看arxiv上的论文实现的  发表于 2023-5-18 09:44
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-8-29 07:36 , Processed in 0.053835 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表