素数判定
2015-03-25 13:30
218 查看
原先错误答案
#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
相关文章推荐
- poj 1811 Prime Test(大素数判定)
- B - 素数判定 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- wikioi 素数判定
- 算法竞赛入门经典_4.1_判定素数_组合数
- hdu 2012 素数判定 xy之间的整数表达式素数 20140723.cpp
- 大素数判定,大整数因式分解模板 HDU 4910
- 1702 素数判定 2[[一中数论随堂练]
- 费马小定理 素数判定 蒙哥马利算法
- hdu 2012 素数判定
- miller_robin大素数判定
- 九度OJ—题目1047:素数判定
- HDU2012_素数判定
- HDU 2012 素数判定
- CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想
- 算法之路二:刘汝佳算法竞赛入门经典 组合数和素数判定
- CSU 1552: Friends 图论匹配+超级大素数判定
- 素数的判定
- 素数判定
- HDU 2010 素数判定
- 素数判定问题