判素数

   素数判定

Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu

Description

对于表达式n 2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x,y<=50),判定该表达式的值是否都为素数。

Input

输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。

Output

对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。

Sample Input

0 1
0 0

Sample Output

OK
 //主要是想说一下sqrt(x)精度损失问题。 //floor向下取整(包含在assert.h头文件中)。 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<assert.h>
 4 #include<math.h>
 5
 6 int judge(int x)//判断一个数是否为素数//logn
 7 {
 8     if(x==0 || x==1) return 0;
 9     int m = floor(sqrt(x)+0.5);
10     for(int i=2; i<=m; i++)
11     {
12         if(x%i==0)
13         {
14             return 0;
15         }
16     }
17     return 1;
18 }
19 int main()
20 {
21     int x, y, i, k, cnt;
22     int s[10000];
23     while(~scanf("%d%d", &x, &y) )
24     {
25         if(x==0 && y==0) break;
26         k = 0;
27         cnt = 0;
28         memset(s, 0, sizeof(s));
29         for(i=x; i<=y; i++)
30         {
31             s[k++] = i*i+i+41;
32             if(s[k-1]<0)
33                 s[k-1] = -s[k-1];
34             if(judge(s[k-1]))
35                 cnt++;
36         }
37         if(cnt == y-x+1)
38             printf("OK\n");
39         else printf("Sorry\n");
40     }
41     return 0;
42 }
时间: 2024-10-05 07:38:03

判素数的相关文章

【Miller-Rabin随机判素数算法】

实用性介绍:████████████████████████████████ 科学性证明:████████████████████████████████ ·在运算中尝试使用quick-pow和quick-mul加速.但实际告诉我们,在多次判素数的情况下,使用quick-mul反而会减速,原因可能是原装%运算消耗了大量时间.(复判重复数T取在4以上,不然很危险) ·大米饼目前只能将它作为"黑盒代码". 1 #include<bits/stdc++.h> 2 #define

Miller-rabin判素数

用Miller-rabin判素数之前,先要知道一个叫费马小定理的东西. 费马小定理:如果p是质数,那么任意和p互质的数的p-1次方对p取模都等于一. 即:任意gcd(a,p)==1,那么a^(p-1)≡1(mod p) 既然我们用费马小定理又得到了一个新的质数的性质,那么我们就可以用这个性质来判定素数. 为了判定p是不是质数,我们随机检验一些a检验a^(p-1)mod p是否为1 但是这样判定一个素数并不是百分百正确的,有一些数不是素数,但依据费马小定理还是会判定成素数. 例如:p=561=3*

Zball in Tina Town(判素数)

Zball in Tina Town Accepts: 397 Submissions: 2463 Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description Tina Town is a friendly place. People there care about each other. Tina has a ball called zball.

HDU 2138 How many prime numbers (判素数,米勒拉宾算法)

题意:给定一个数,判断是不是素数. 析:由于数太多,并且太大了,所以以前的方法都不适合,要用米勒拉宾算法. 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <cstring> #include <map> #include <cctype> u

HDU 4344 随机法判素数(费马小定理

#include <cstdio> #include <ctime> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; const int N = 108; const int S = 10; ll mult_mod(ll a, ll b, ll c) { a %= c; b %= c; ll ret = 0; while(b) { if(b&am

【BZOJ-3667】Rabin_Miller算法 随机化判素数

3667: Rabin-Miller算法 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 983  Solved: 302[Submit][Status][Discuss] Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质数就输出Prime 第二,如果不是质数,输出它最大的质因子是哪个. Output

USACO1.5Superprime Rid[附带关于素数算法时间测试]

题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数. 7331 被叫做长度 4 的特殊质数.写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数.数字1不被看作一个质数. 输

素数专题

素数专题 素数是一个经常的涉及到得内容,所以有必要整理出有关解决素数相关问题的算法 学习资料:Eratosthenes筛法和欧拉筛法对比 一般筛法求素数+快速线性筛法求素数 数学技巧之素数筛选 1 /* 2 约数枚举,复杂度O (sqrt(n)) 3 By TiaoZhan 4 */ 5 vector<int> divisor(int n) 6 { 7 vector<int> res; 8 for (int i=1; i*i<=n; ++i) 9 { 10 if (n % i

4N - 素数回文

xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 <= a < b <= 100,000,000); Input 这里有许多组数据,每组包括两组数据a跟b. Output 对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行. Sample Input 5 500 Sample Output 5 7 1