title: 求质数(算法)date: 2020-12-10 22:44:41
tags: C++
categories: 算法

用矩阵表减少运行时间

  1. #include <iostream>
  2. #include <string.h>
  3. #define N 1000000
  4. using namespace std;
  5. int s[N]; //s[i] = 0表示 i 是素数
  6. int main()
  7. {
  8. int n,i,j,sum = 0;
  9. memset(s,0,sizeof(s));
  10. cin>>n;
  11. for(i = 2; i <= n; i++)
  12. {
  13. if(s[i] == 0) //i为素数
  14. {
  15. sum++;
  16. for(j= 2; j*i <= n;j++)
  17. {
  18. s[i*j] = 1; //i为素数,则i*j为合数
  19. }
  20. }
  21. }
  22. cout<<sum+1;
  23. return 0;
  24. }