c++ hdu 2012

[复制链接]
查看11 | 回复1 | 2010-4-24 08:04:13 | 显示全部楼层 |阅读模式
你的程序有两个问题:1.素数的判断不仅有点多了,其实判断到sqrt(a),而且可以从3开始加2的循环,当然这并不影响结果,但是你有个致命的错误就是if (i == a - 1) return 1;即是素数时候返回1,测试一下你就知道应该是i == a,因为退出循环式i已经加1了,不应该呀。你的源程序判断5都为合数;2.也很不应该,你的程序按理说是无法输出ok的,tf=1则继续到了就退出循环了,tf=0则直接退出了,好像测试数据都不对啊~要多多调试,多多测试,当然要多多仔细啊~祝好。我的已经过了~
回复

使用道具 举报

千问 | 2010-4-24 08:04:13 | 显示全部楼层
看了你的代码问题出在这if(tf==1)
continue;
else
{
cout>x&&cin>>y) {int n,s,k=0,flag=0;if(x==0&&y==0)break;if(x>y){ int t; t=x; x=y; y=x;} for(n=x;n<=y;n++){ s=n*n+n+41; for(int i=2;i<s;i++) {
if(s%i==0)k++; } if(k==0)flag++;}if(flag==y-x+1)cout<<"OK"<<endl;else cout<<"Sorry"<<endl; }}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行