素数判定
来源:互联网 发布:手机网络劫持apk 编辑:程序博客网 时间:2024/04/28 06:20
原先错误答案
#include <stdio.h>
int main()
{
int i,n,m,y,x,t,c,a;
while(scanf("%d %d",&n,&m)!=EOF)
{if(n=0,m=0) break;
t=0;
for(i=n;i<=m;i++)
{a=i*i+i+41;
for(c=1;c<=a;c++)
{y=i%c;
if(y==0) t=1;
}
}
if(t==1) printf("OK");
else if(t==0) printf("Sorry");
}
return 0;
}
调用函数isPrime
#include <stdio.h>
int isPrime(int a)
{
int i;
if(a<=1)
return 0;
for(i=2;i<a;i++)
{
if(a%i==0) //题目说表达式的值都为素数,所以只要有一个不满足就不满足
return 0;
}
return 1;
}
int main ()
{
int c,n,m,sign;
while(scanf("%d%d",&n,&m)!=EOF)
{sign=1;
if(n==0&&m==0) break;
for(c=n;c<=m;c++)
{
if(!isPrime(c*c+c+41))
{sign=0;}
}
if(sign==1) printf("OK\n");
else printf("Sorry\n");
}
return 0;
}
其实算素数 只要整除2—根号a之间的数就可以了
#include <stdio.h>
int isPrime(int a)
{
int i;
if(a<=1)
return 0;
for(i=2;i*i<a;i++)
{
if(a%i==0)
return 0;
}
return 1;
}
int main ()
{
int c,n,m,sign;
while(scanf("%d%d",&n,&m)!=EOF)
{sign=1;
if(n==0&&m==0) break;
for(c=n;c<=m;c++)
{
if(!isPrime(c*c+c+41))
{sign=0;}
}
if(sign==1) printf("OK\n");
else printf("Sorry\n");
}
return 0;
}
自己答案纠正
#include <stdio.h>
int main()
{
int i,n,m,y,x,t,c,a;
while(scanf("%d %d",&n,&m)!=EOF)
{if(n==0,m==0) break;
t=0;
for(i=n;i<=m;i++)
{a=i*i+i+41;
for(c=2;c<a;c++)
{y=a%c;
if(y==0) t=1;
}
}
if(t==0) printf("OK\n");
else if(t==1) printf("Sorry\n");
}
return 0;
}
1不是素数 这个题目的取值最少是41,所以不要单独考虑1
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定
- 素数判定!
- 素数判定
- 素数判定
- 素数判定
- Linux系统性能监控之I/O
- UVA 11992(Fast Matrix Operations-线段树区间加&改)[Template:SegmentTree]
- Temporary Stored Procedures
- 阿里云远程如何访问mysql
- poj 1743 后缀数组+二分判定
- 素数判定
- 用c/c++实现linux下检测网络接口状态
- 多项式求和
- 选择a,b,c的大小
- 求两点的距离
- KMP算法详解
- 求绝对值
- leetcode | Merge k Sorted Lists
- 奇数乘积