注册 登录
编程论坛 C++教室

[求助]怎样判断素数??

darenwu12345 发布于 2007-04-07 15:23, 3386 次点击

#include<iostream.h>
int main()
{
int iNum, iFlag;
do{
cout<<"input a number(>0)";
cin >>iNum;
}while(iNum>0)
for(int i=2;i<=iNum;i++)
{
if(iNum%i==0)
_________________
}
if(________)
cout<<iNum<<"is prime number";
else
cout<<iNum<<"is not prime number";
return 0;

}怎样判断素数啊?补充完整!!!还有iFlag怎么用啊??还有所有的因子都要输出!!!

5 回复
#2
slowlybear2007-04-07 17:09
感觉是不是有点问题啊。后面明显要用iFlag的值来判断iNum,所以第一个空的条件成立,iFlag=0即使假,否则iFlag=1为真。
但是哪个判断...从2到iNum本身,iNum%iNum肯定成立的。。。即使iFlag一定会是0。。。
哪个判断应该是 for (int i=2;i<iNum;i++) 吧。
#3
天下第二刀2007-04-07 18:02

给你一个最简单的~

for(int i=1;i<50;i++)
{

if(i%2 ==0)
continue;
int j=3;
while(j<=i/2 && i%j !=0)
j+=2;

if(j>i/2)
cout<<i<<" ";

}

#4
peswe2007-04-07 20:17
#include<iostream.h>
int main()
{
int iNum, iFlag;
do{
cout<<"input a number(>0)";
cin >>iNum;
}while(iNum>0)
for(int i=2;i<=iNum;i++)
{
if(iNum%i==0)
_______iFlag=0;__________
}
if(iFlag)
cout<<iNum<<"is prime number";
else
cout<<iNum<<"is not prime number";
return
按道理是这样的,只是不知道你这里用do.....while 是什么意思,这里说不过去的啊!~
#5
帅浪2007-04-09 11:23
#include<iostream.h>
int main()
{
int iNum, iflag;
do{
cout<<"input a number(>0)";
cin >>iNum;
}while(iNum<0);//楼主这里少了个‘;’,还有就是(iNum<0)不然就一直循环,让你输出了!意思也就是说当你输入的是正数就跳出这个循环!
for(int i=2;i<iNum;i++)//改为i<iNum;
{
if(iNum%i==0)
iflag=0;
}
if(iflag)
cout<<iNum<<"is prime number";
else
cout<<iNum<<"is not prime number";
return 0;
}
#6
I喜欢c2007-04-09 22:31
以下是引用darenwu12345在2007-4-7 15:23:47的发言:

#include<iostream.h>
int main()
{
int iNum, iFlag;
do{
cout<<"input a number(>0)";
cin >>iNum;
}while(iNum>0);
for(int i=2;i<=iNum;i++)
{
if(iNum%i==0)
iFlg=0;
}
if(iFlag==0) //标准写法,当然可去掉==0
cout<<iNum<<"is prime number";
else
cout<<iNum<<"is not prime number";
return 0;

}怎样判断素数啊?补充完整!!!还有iFlag怎么用啊??还有所有的因子都要输出!!!

[此贴子已经被作者于2007-4-9 22:34:12编辑过]

1