網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2014-03-13, 10:06 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,059
預設 輸入一數之後,求其中有哪些是質數 ?

我自己想的一個求有哪些質數的程式碼,有些錯誤,但似乎是能把質數找出來,只是它印出來的結果會重複好幾次。

能否請先進幫我看看,就我寫的這種寫法,有哪些地方出錯?也許還有不可見的錯誤。

如果覺得整個錯誤,也請告知,我尚未看網上相關的寫法。

thanks.

使用者輸入一數字後,算出從一到該數字中有多少質數?

#include <stdio.h>

int main(void)

{
int num,x,y,prime;

printf("enter a number: \n");
scanf("%d",&num);

for(x=1;x<num;x++) {
for(y=2;y<=x/2;y++)
if((x%y)==0) break;
if((x%y)!=0) prime=x;
printf("%d\n",prime);
}

return 0;
}
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-03-13, 11:07 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

可以这样写:
#include <stdio.h>
int main(void)
{
int num,x,y,prime;
printf("enter a number: \n");
scanf("%d",&num);
for(x=1;x<=num;x++) {
for(y=2;y<=x/2;y++)
if(x%y==0) {prime=0;break;}
if(x%y!=0 and x!=1) prime=x;
if (prime!=0) printf("%d\n",prime);
}
return 0;
}
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #3  
舊 2014-03-13, 11:16 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,059
預設

引用:
作者: yumi 查看文章
可以这样写:
#include <stdio.h>
int main(void)
{
int num,x,y,prime;
printf("enter a number: \n");
scanf("%d",&num);
for(x=1;x<=num;x++) {
for(y=2;y<=x/2;y++)
if(x%y==0) {prime=0;break;}
if(x%y!=0 and x!=1) prime=x;
if (prime!=0) printf("%d\n",prime);
}
return 0;
}

十分感謝,果然沒錯。 除了 if(x%y!=0 and x!=1) prime=x; 這裡要改一下成為 if((x%y!=0) && x!=1) prime=x;
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #4  
舊 2014-03-14, 04:03 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,059
預設

#include <stdio.h>
int main(void)
{
int num,x,y,prime;
printf("enter a number: \n");
scanf("%d",&num);
for(x=1;x<=num;x++) {
for(y=2;y<=x/2;y++)
if(x%y==0) {prime=0;break;}//為何這裡要增加 prime=0?
if((x%y!=0) && x!=1) prime=x;
if (prime!=0) printf("%d\n",prime); //為何要加if(prime!=0)
}
return 0;
}

有一點想不太通它的邏輯推演。

從邏輯上來說,prime=x,而x=1開始,且如果有prime=0則break,應該不會再出現有prime==0的情形啊?
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #5  
舊 2014-03-14, 09:19 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

您原先写的程序,“它印出來的結果會重複好幾次”。
例如,7 会重复4次。
这是因为,测试7的时候,是质数,输出7;
测试8的时候,不是质数,又打印了7;
测试9、10的时候,又打印两次7;
测试11的时候,开始打印11。

我修改的部分,当当前的数是质数的时候,存进prime打印;当当前的数不是质数的时候,把0存进prime,表示不是质数,不要打印了。
这只是避免重复打印而已。没有别的含义。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #6  
舊 2014-03-14, 09:57 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,059
預設

引用:
作者: yumi 查看文章
您原先写的程序,“它印出來的結果會重複好幾次”。
例如,7 会重复4次。
这是因为,测试7的时候,是质数,输出7;
测试8的时候,不是质数,又打印了7;
测试9、10的时候,又打印两次7;
测试11的时候,开始打印11。

我修改的部分,当当前的数是质数的时候,存进prime打印;当当前的数不是质数的时候,把0存进prime,表示不是质数,不要打印了。
这只是避免重复打印而已。没有别的含义。


容我好好想一想,看能否想通?我顯然在這裡就卡關了,百思不得其然。
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
回覆


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 03:08 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.