主题:c++程序
welsen
[专家分:0] 发布于 2010-12-19 12:26:00
素数判定。
题目描述
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y),判断表达式的值是否是素数。
输入描述:
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
输出描述:
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
输入样例
0 1
0 0
输出样例
OK
回复列表 (共3个回复)
沙发
zjhzcayqw [专家分:110] 发布于 2010-12-20 21:36:00
#include<stdio.h>
#include<math.h>
void main()
{
int x,y,n,a,i,m;
float k;
while(scanf("%d%d",&x,&y),x||y)
{
if(y>x)
{
m=0;
for(n=x;n<=y;n++)
{
a=n*n+n+41;
k=sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>k)
m++;
}
}
if(m==y-x+1)
printf("OK");
if(x>y||m!=y-x+1)
printf("Sorry");
printf("\n");
}
}
自己多思考下,以后最好是把你出错的程序发下,这样我们给你找出错误后你仔细研究研究,就能获得更大的提高0.0
板凳
welsen [专家分:0] 发布于 2010-12-21 15:24:00
知道了,谢谢。[em2]
3 楼
qzqzzhll [专家分:50] 发布于 2010-12-23 11:01:00
#include<iostream>
using namespace std;
bool sushu(int c){
for(int i=2;i<c;i++)
if(c%i==0)
return true;
return false;}
bool pand(int a,int b){for(int i=a;i<b+1;i++)
if(sushu(i*i+i+41)) return false;
return true;}
int main(){int a,b;
cout<<"please input two datas:"<<endl;
cin>>a>>b;
while(a!=0||b!=0){
if(pand(a,b))
cout<<"ok"<<endl;
else cout<<"sorry"<<endl;
cout<<"please input two datas:"<<endl;
cin>>a>>b;
}}
我来回复