作者hsnu114444 (我只是QQ糖)
看板NCCU08_MATH
标题Re: [讨论] 判断质数
时间Thu Jun 18 22:39:56 2009
我写了个判断质数的程式
如下
int m , n;
n = int::Parse(textBox1->Text);
for ( m = 2 ; m < n ; m++) {
if (n%m == 0) {
MessageBox::Show(n.ToString() + "不是质数");
break;
}
else
MessageBox::Show(n.ToString() + "是质数");
}
但是
这样结果好像变成
m会从2开始一直加1然後除n
之後可整除就跳出不是质数
不可整除就跳出是质数
要怎样让他一次判断m从2~n-1然後都不能整除然後才说他是质数阿?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
以上是阿喜原文
你这样的写的话,就变成说,for回圈每跑一次
就会跑出一个MessageBox,所以你应该要修改一下
上面那个if(n%m == 0)的判断可以留下来
因为这就是说遇到m整除n的情况,他就会show一个不是质数。
然後他就会
重跑一次回圈<<<这是重点
所以你的第一个if里面要加一行
if(n%m == 0){
MessageBox::Show(n.toString+"不是质数");
break;
}
break的作用是让回圈的东西结束(swtich也会用到)
至於不整除的部分,你可以先宣一个变数表示质数状态,假如宣告s是质数状态
s = 0 不是质数
s = 1 是质数
然後你原本的
if(n%m == 0) 里面加一行 s = 0
else里面加一行 s = 1
这样等你整个回圈跑完後,如果你这个n真的是质数
s最後就会是1
for以外(注意!!是for外面喔)
加
if(s == 1){
MessageBox::Show(n.toString+"是质数");
}
这样当你结束for回圈时,就可以得到是不是质数的结果
阿喜棒棒!!
--
欸.....
我跟你说
cout << 我是 小 Q 喔!! <<endl;
屌吧?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.67.215
※ 编辑: hsnu114444 来自: 123.193.67.215 (06/18 22:41)
1F:推 lovesnow1990:谢拉~ 另外想问一下n的平方根要怎样设定出来? 06/18 22:52
2F:推 jacky7987:squa(n)? 06/18 22:55
3F:推 lovesnow1990:所以要再定义一个整数之後 等於squa(n)吗 06/18 22:58
4F:→ hsnu114444:不用那麽麻烦 那个还要加函式库<math.h>才能用 06/18 23:01
5F:推 isaac7910:阿喜的棒棒!? 06/18 23:02
6F:→ hsnu114444:判断式里面 你可以反过来写 例如m小於n平方 06/18 23:02
7F:→ hsnu114444:m < n*n 06/18 23:02
8F:→ hsnu114444:是sqrt(n) 06/18 23:03
9F:→ hsnu114444:你的那个应该式改成m*m<n 06/18 23:04
10F:→ hsnu114444:sqrt(n)回传值是double 不能直接当int用 06/18 23:07