wojiaocbj

Untitled

Apr 20th, 2022
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. int isprime(LL *primetable,LL n){
  2.     //利用质数表 判断是否为质数
  3.     int i;
  4.     for(i = 0;primetable[i] * primetable[i] <= n;i++){
  5.         if(n % primetable[i] == 0)return 0;
  6.     }
  7.     return 1;
  8. }
  9. int initmaxprime(LL *primetable,LL maxval){
  10.     //构造最大质数 小于等于maxval的质数表
  11.     //储存于primetable数组中 需要保证primetable足够大
  12.     //返回值为primetable的实际长度
  13.     int cnt = 3,step;
  14.     LL num;
  15.     primetable[0] = 2;primetable[1] = 3;primetable[2] = 5;
  16.     num = 7;step = 2;
  17.     while(num <= maxval){
  18.         step = 6 - step;
  19.         if(isprime(primetable,num)){
  20.             primetable[cnt++] = num;
  21.         }
  22.         num += step;
  23.     }
  24.     return cnt;
  25. }
  26. void initnprimes(LL *primetable,LL n){
  27.     //构造含有n个质数的质数表
  28.     //储存于primetable数组中 需要保证primetable足够大
  29.     int cnt = 3,step = 2;
  30.     primetable[0] = 2;primetable[1] = 3;primetable[2] = 5;
  31.     LL num = 7;
  32.     while(cnt <= n){
  33.         step = 6 - step;
  34.         if(isprime(primetable,num)){
  35.             primetable[cnt++] = num;
  36.         }
  37.         num += step;
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment