poj3518 打质数表

题意:给你一个数 如果是素数就输出0 否则输出大于它的最小质数 和 小于他的最大质数 的差

比如10  大于它的最小质数是11  小于他的最大质数是7 所以输出11-7=4

水题质数表 虽然我的方法傻逼哭)

 1 #include  <stdio.h>
 2 #include  <string.h>
 3 bool isp [ 10000010 ];
 4 int prime [ 10010 ], size , n , ans , Min =  1299709 , k ;
 5 int  main ()
 6 {
 7     memset ( isp , 1 , sizeof ( isp ));
 8     for  ( int i =  2 ; i <=  100000 ; i ++)
 9     {
10         if  ( isp [ i ])
11         {
12             prime [++ size ]  = i ;
13             for  ( int k =  2 ; k <=  1299709 / i ; k ++)
14                 isp [ k * i ]  =  false ;
15         }
16     }
17     k =  0 ;
18     int kk ;
19     while ( scanf ( "%d" ,& n ), n )
20     {
21         if ( isp [ n ])
22         {
23             printf ( "0 \n " );
24             continue ;
25         }
26         for  ( k =  1 ;; k ++)
27         {
28             if ( isp [ n - k ])
29                 break ;
30         }
31         for  ( kk =  1 ;; kk ++)
32         {
33             if ( isp [ n + kk ])
34                 break ;
35         }
36         printf ( "%d \n " , kk + k );
37     }
38     return  0 ;
39 }

时间: 2024-10-10 21:26:01

poj3518 打质数表的相关文章

c++质数判定及输出质数表

本程序提示用户输入最大值,以此为范围,从最小质数2开始举判断质数,输出质数表.代码如下: 1 // 素数表.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 6 7 int main() 8 { 9 int x = 2,y=1,b,line=0; //x最小质数2为枚举起点,y初值为1,之后递加1,b范围内最大质数,line每行输出的数的数量 10 cout << "请输入最大值:"; 11 cin

NOIp模拟3 游戏

试题描述 windy学会了一种游戏. 对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应. 最开始windy把数字按顺序1,2,3,--,N写一排在纸上. 然后再在这一排下面写上它们对应的数字. 然后又在新的一排下面写上它们对应的数字. 如此反复,直到序列再次变为1,2,3,--,N. 如: 1 2 3 4 5 6 对应的关系为 1->2 2->3 3->1 4->5 5->4 6->6 windy的操作如下 1 2 3 4 5 6 2 3 1 5 4 6 3

P2563 [AHOI2001]质数和分解

题目描述 任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如,9 的质数和表达式就有四种本质不同的形式: 9 = 2 + 5 + 2 = 2 + 3 + 2 + 2 = 3 + 3 + 3 = 2 + 7 . 这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中参加和运算的各个数的位置而直接得到另一个表达式. 试编程求解自然数 n 可以写成多少种本质不同的质数和表达式. 输

关联容器(底层机制) — hashtable

C++ 11已将哈希表纳入了标准之列.hashtable是hash_set.hash_map.hash_multiset.hash_multimap的底层机制,即这四种容器中都包含一个hashtable. 解决碰撞问题的办法有许多,线性探测.二次探测.开链等等.SGI STL的hashtable采用的开链方法,每个hash table中的元素用vector承载,每个元素称为桶(bucket),一个桶指向一个存储了实际元素的链表(list),链表节点(node)结构如下: template <cl

ALGO-51 Torry的困惑(基本型)

算法训练 Torry的困惑(基本型) 时间限制:1.0s   内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000--个质数的乘积是多少呢?他把这个问题告诉老师.老师愣住了,一时回答不出来.于是Torry求助于会编程的你,请你算出前n个质数的乘积.不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值. 输入格式 仅包含一个正整数n,其中n<=100

数论——质因数分解(C++)

一.构造质数表 (1)试除法 源代码: #include<cstdio>int n,s(1),i[1001];int main(){ scanf("%d",&n); i[1]=2; printf("2 "); for (int a=3;s<n;a++) { bool t(0); for (int b=1;b<=s;b++) if (!(a%i[b])) t=true; if (!t) { s++; i[s]=a; printf(&qu

bzoj2818 Gcd

Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对.N≤10000000 1<=x,y<=N且Gcd(x,y)为质数等价于Gcd(x/p,y/p)=1,p为质数, 线性筛求1~n的欧拉函数值和质数表, 对欧拉函数求前缀和,枚举质数计算x/p<y/p的情况,结果乘二(加上x/p>y/p的情况), 最后加上x=y=p的情况 #include <cstdio> bool isnp[10000001]={1,1

java 经典算法(转)

1.河内之塔.. 2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇后 9.Algorithm Gossip: 八枚银币. 10.Algorithm Gossip: 生命游戏. 11.Algorithm Gossip:

算法系列2——RSA

1. RSA介绍 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准.RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的