【uva1644】 素数间隔 Prime Gap [数学 质数筛]

UVA1644 素数间隔 Prime Gap

 

有多组数据,每组一个n,若n为0,程序结束。若n为质数,输出0.否则输出离它最近的两个质数(一个比n大,一个比n小)之差。(质数最大为 1299709,即抵十万个素数。)

真的hei水 非常水 超级无敌水 拿来背质数筛

 

线性筛法 -- 欧拉筛法

比普通的Eratosthenes筛法(复杂度为(O(nloglogn))效率要高些 为O(N)

用v数组储存每个数的最小质因子

其他题可能会用到这个:prime[j]必定是prime[j]*i的最小质因子

 1 void primes(int n)
 2 {
 3     memset(v,0,sizeof(v));//最小质因子
 4     cnt=0;//质数数量 
 5     for(int i=2;i<=n;i++)
 6     {//给i乘上一个质因子
 7         if(!v[i]) v[i]=i,prime[++cnt]=i;//若i为质数
 8         for(int j=1;j<=cnt;j++)
 9         if(prime[j]>v[i]||prime[j]>(n/i)) break;//i有比prime[j]更小的质因子||超出n的范围
10         else v[i*prime[j]]=prime[j];
11     }
12 }

 

本题 就先把素数预先处理出来  如果它的最小质因子为它本身即v[x]==x则 x为素数

如果不是素数 就从左往右扫出第一个大于x的素数prime[i] 然后输出prime[i]-prime[i-1]

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int X=1299709+5;
 4 int n,k;
 5 int v[X],pri[X],cnt;
 6 template<class t>void rd(t &x)
 7 {
 8     x=0;int w=0;char ch=0;
 9     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
10     while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
11     x=w?-x:x;
12 }
13 
14 void prime()
15 {
16     memset(v,0,sizeof(v));//最小质因子
17     memset(pri,0,sizeof(pri));
18     cnt=0;//质数数量 
19     for(int i=2;i<=X;i++)
20     {        
21         if(!v[i]) v[i]=i,pri[++cnt]=i;
22         for(int j=1;j<=cnt;j++)
23         if(pri[j]>v[i]||pri[j]>(X/i)) break;
24         else v[i*pri[j]]=pri[j];
25     }
26 }
27 
28 int main()
29 {
30     prime();
31     while(scanf("%d",&n)&&n)
32     {
33         if(v[n]==n) printf("0\n");
34         else
35             for(int i=2;i<=cnt;i++)
36             if(pri[i]>n)
37             {
38                 printf("%d\n",pri[i]-pri[i-1]);
39                 break;
40             }
41     }
42     return 0;
43 }

感觉比之前做的luogu新手村还简单

转载于:https://www.cnblogs.com/lxyyyy/p/10505508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值