![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
![]() |
#11 (permalink) |
管理員
![]() ![]() |
![]() 還可以用 scanf 做外部輸入範圍
以 2 的指數作範圍 語法:
//質數計算 #include <stdio.h> //載入函式庫 stdio #include <stdlib.h> //載入函式庫 stdlib #include <math.h> //載入函式庫 math #define clrscr() system("CLS") //畫面清除巨集 #define pause() puts("\n") & system("PAUSE") //畫面暫停巨集 main() { unsigned long int i,j,mod_counter; //for_loop 變數 i,j;整除統計 mod_counter unsigned long int min=0,max=0,counter = 0; int inupt_exp; clrscr(); //畫面清除 printf ("\n請輸入欲求取質數的位元數:"); scanf("%d",&inupt_exp); clrscr(); //畫面清除 printf ("\n %d 位元質數:\n",inupt_exp); printf ("\n最小質數"); for ( i=1; i<=pow(2,inupt_exp)-1; i++ ) { //取餘數除法的Loop1,i 為被除數 3 mod_counter = 0; //整除統計歸零 for ( j=2; j<=i; j++ ) //取餘數除法的Loop2,j 為除數 if ( i%j == 0 ) mod_counter ++ ; //當被整除時,整除計數 +1 if ( mod_counter == 1 ) { //當被整除次數只有 1 次,並輸出最大質數 counter ++; //統計質數的個數 min = i; //紀錄最小的質數 printf ("為 %d\n",i); } } if ( min == 0) printf (" 沒有\n"); printf ("\n最大質數"); if ( max > 0) printf ("為 %d\n",max); else printf (" 沒有\n"); printf ("\n共有 %d 個值數\n",counter); pause(); //畫面暫停 } 用開始與結束的值做範圍 語法:
//質數計算 #include <stdio.h> //載入函式庫 stdio #include <stdlib.h> //載入函式庫 stdlib #include <math.h> //載入函式庫 math #define clrscr() system("CLS") //畫面清除巨集 #define pause() puts("\n") & system("PAUSE") //畫面暫停巨集 #define swap(x,y) (x^=y^=x^=y) //數值交換巨集 main() { unsigned long int i,j,mod_counter; //for_loop 變數 i,j;整除統計 mod_counter unsigned long int min=0,max=0,counter=0; unsigned long int inupt_A,inupt_B; clrscr(); //畫面清除 printf ("\n請輸入欲求取質數的數值 A :"); scanf("%d",&inupt_A); printf ("\n請輸入欲求取質數的數值 B :"); scanf("%d",&inupt_B); clrscr(); //畫面清除 printf ("\n%d ~ %d 的質數:\n",inupt_A,inupt_B); printf ("\n最小質數"); if (inupt_A > inupt_B) //A值 > B值,就互換數值 swap(inupt_A,inupt_B); for ( i=inupt_A; i<=inupt_B; i++ ) { //座取餘數除法的Loop1,i 為被除數 mod_counter = 0; //整除統計歸零 for ( j=2; j<=i; j++ ) //座取餘數除法的Loop2,j 為除數 if ( i%j == 0 ) mod_counter ++ ; //當被整除時,整除計數 +1 if ( mod_counter == 1 ) { //當被整除次數只有 1 次,並輸出最大質數 counter ++; //統計質數的個數 if ( counter == 1 ) { min = i; //紀錄最小的質數 printf ("為 %d\n",i); } max = i; //紀錄最大的質數 } } if ( min == 0) printf (" 沒有\n"); printf ("\n最大質數"); if ( min > 0) printf ("為 %d\n",max); else printf (" 沒有\n"); printf ("\n\n共有 %d 個值數\n",counter); pause(); //畫面暫停 } 此帖於 2007-11-05 11:18 AM 被 getter 編輯. |
![]() |
送花文章: 37855,
![]() |