灵异事件!!!

finalbug 2005-07-26 12:49:05
#include <iostream>
#include <climits>
using namespace std;

int cube(int i)
{
int count=0;
int check;
while(i>0)
{
check+=i%2;
count++;
i/=2;
}
if(check==1) return count-1;
else return -1;
}

int main()
{
int number;
while(!cin.eof())
{
cin >> number;
int a,b;
a=b=INT_MAX;
if(number==1)
{
cout << "2^? mod 1 = 1" <<endl;
continue;
}
if(number%2==0)
{
cout << "2^? mod "<< number <<" = 1" <<endl;
continue;
}
else
{
int i;
int temp;
for(i=1;i<INT_MAX;i++)
{

temp=cube(i*number+1);
//cout << temp << "\t"; //灵异行
if(temp>0)
{
cout <<"2^" << temp<< " mod "<<number<<" = 1" << endl;
break;
}
}
if(i==INT_MAX)
cout << "2^? mod "<<number<<" = 1" <<endl;
}
}
return 0;
}

如果把上面的注释行取消注释,则结果正确.比如输入5,输出应为:2^4 mod 5 = 1;
可如果注释掉,输入5后,就是2^? mod 2 = 1了.
高手赐教.
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
antter 2005-07-26
  • 打赏
  • 举报
回复
不清楚,我这很正常
int cube(int i)
{
int count=0;
int check;(check没初使化)
sandrowjw 2005-07-26
  • 打赏
  • 举报
回复
你的程序问题不少,不过最主要的一个问题是check没有初始化,这就是你所谓灵异事件的源头,这里:
int cube(int i)
{
int count=0;
int check = 0;//!!!!!!!
while(i>0)
{
check+=i%2;
count++;
i/=2;
}
还有其他问题你慢慢调,不用着急。

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧