输出的结果怎么不对?

MoonZhangyu 2003-06-12 05:18:19
//输出的质因子结果怎么不对,请帮忙改一下代码
#include <iostream.h>
#include <math.h>
bool check(int);
bool Primecheck(int);
void main()
{
cout<<"Prease input a num"<<endl;
int num;
cin>>num;
check(num);
if (check(num)) //true
cout<<"it is a prime"<<endl;
else //false
cout<<"it is not a prime"<<endl;
}

static bool check(int num)
{
for (int i=2; i<num; i++)
{
if (num%i==0)
{
if (Primecheck(i))
{
cout<<i<<endl;
}
return false;
}

}
return true;
}

static bool Primecheck(int i)
{
double a=i;
double sq=sqrt(a);
for (int j=2; j<=sq; j++)
{
if (i%j==0)
{
return false;
}
}
return true;
}




...全文
73 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoonZhangyu 2003-06-12
  • 打赏
  • 举报
回复
代码改了一下,但是怎么重复输出质因子啊
//输出的质因子结果怎么不对,请帮忙改一下代码
#include <iostream.h>
#include <math.h>
bool check(int);
bool Primecheck(int);
void main()
{
cout<<"Prease input a num"<<endl;
int num;
cin>>num;
check(num);
if (check(num)) //true
cout<<"it is a prime"<<endl;
else //false
cout<<"it is not a prime"<<endl;
}

static bool check(int num)
{
for (int i=2; i<num; i++)
{
if (num%i==0)
{
if (Primecheck(i))
{
cout<<i<<endl;
}
else
return false;
}

}
return true;
}

static bool Primecheck(int i)
{
double a=i;
double sq=sqrt(a);
for (int j=2; j<=sq; j++)
{
if (i%j==0)
{
return false;
}
}
return true;
}
WhatCanIdoing 2003-06-12
  • 打赏
  • 举报
回复
static bool Primecheck(int i)
{
double a=i;
double sq=sqrt(a); //这里可能有精度问题
for (int j=2; j<=sq; j++)
{
if (i%j==0)
{
return false;
}
}
return true;
}
pzytony 2003-06-12
  • 打赏
  • 举报
回复

不好意思,程序质量实在不高


没法改,否则只能重写了
晨星 2003-06-12
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <math.h>
bool check(int);
bool Primecheck(int);
void main()
{
cout<<"Prease input a num"<<endl;
int num;
cin>>num;
// check(num); //去掉这句,省得输出两次。
if (check(num)) //true
cout<<"it is a prime"<<endl;
else //false
cout<<"it is not a prime"<<endl;
}

static bool check(int num)
{
bool prime = true;
for (int i=2; i<num; i++)
{
if (num%i==0)
{
if (Primecheck(i))
{
cout<<i<<endl;
prime = false;//先别return,记下来就行了。
}
}

}
return prime;
}

static bool Primecheck(int i)
{
double a=i;
double sq=sqrt(a);
for (int j=2; j<=sq; j++)
{
if (i%j==0)
{
return false;
}
}
return true;
}
WhatCanIdoing 2003-06-12
  • 打赏
  • 举报
回复
static bool check(int num)
{
for (int i=2; i<num; i++)
{
if (num%i==0)
{
if (Primecheck(i))
{
cout<<i<<endl; //最后的质因子不能输出
}
return false;
}

}
return true;
}
WhatCanIdoing 2003-06-12
  • 打赏
  • 举报
回复
初步调试结果:正确啊
晨星 2003-06-12
  • 打赏
  • 举报
回复
你怎么输出一个质因子就return了?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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