怎么优化这个求质数的代码?

P1865 A % B Problem

……下面是全部的代码 # include <bits/stdc++.h> using namespace std; int n,m,k; int l,r,t; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d%d",&l,&r); if(l<1||l>m||r<1||r>m) { cout<<"Crossing the line"<<endl; continue; } t=0; for(int j=l;j<=r;j++) { k=0; for(int h=2;h*h<=j;h++) { if(j%h==0) k=1; } if(k==0)t++; } if(l==1)t--; cout<<t<<endl; } return 0; }
by Scorpio初霁 @ 2018-11-03 14:17:13


可以去百度一下线性筛,时间效率$O(n)$
by Gavin·Olivia @ 2018-11-03 14:18:04


``` #include<stdio.h> int n,i,srx[101],sry[101],j; int main() { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d",&srx[i],&sry[i]); for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(srx[i]+sry[i]==srx[j]&&srx[j]+sry[j]==srx[i]) {printf("YES"); return 0;} printf("NO"); return 0; } ```
by 不到前10不改名 @ 2018-11-03 14:18:10


代码如下(自己打的): ```cpp pd[1]=true; for(i=2;i<=n;i++) { if(!pd[i]) prm[++cnt]=i; for(j=1;j<=cnt;j++) { k=prm[j]*i; if(k>n)break; pd[k]=true; small[k]=j; if(small[i]==j) break; } } ```
by Gavin·Olivia @ 2018-11-03 14:22:29


中国剩余定理
by w23c3c3 @ 2018-11-03 14:27:58


|