請幫我解釋這個程式的每一行!!

每一行所代表的意思唷~~

謝謝各位大大!!

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main(void)

{

int m,i,h=0,leap=1;

int a,b,r;

int f,a1 = 0,aa;

printf("輸入一個範圍:\\n");

scanf("%d",&a);

aa = a;

float k;

printf("\\n");

for(m=1;m<=a;m++)

{

k=sqrt((double)m);

for(i=2;i<=k;i++)

if (m%i==0)

{

leap=0;

break;

}

if (leap && m>1 )

{

printf("%-4d",m);

h++;

if (h%1==0)

printf("\\n");

}

leap=1;

}

system("pause");

return 0;

}

1 個解答

評分
  • Sara
    Lv 5
    1 0 年前
    最佳解答

    #include <iostream> //C++的基本input和output(cin,cout)..照下面看來這行應該可以省略

    #include <stdio.h> //C的基本input和output,printf和scanf應該是include這個..

    #include <stdlib.h> //system("pause");的時候要用到這個,否則會錯誤

    #include <math.h> //可算數學的函式

    int main(void)

    {

    int m,i,h=0,leap=1; //宣告整數變數,有加等於的代表宣告時順便指定初始值

    int a,b,r; //同上

    int f,a1 = 0,aa; //同上

    printf("輸入一個範圍:\n");

    scanf("%d",&a); //讀取一個整數,存到 a

    aa = a; //把 a 的值指定給 aa

    float k; //宣告一個浮點數 k

    printf("\n"); //這裡的\n代表換行符號,代表換到下一行

    for(m=1;m<=a;m++) //第一個for迴圈:m從1開始;m<=a時循環執行;執行一次後m=m+1

    {

    k=sqrt((double)m); //(double)代表把m的型態強制轉型成double,

    //sqrt()代表計算括號內數值的平方根→k = m的平方根

    for(i=2;i<=k;i++) //第二個for迴圈:i從2開始執行,到 i>k 時跳出迴圈

    if (m%i==0) //若 m 除以 i 的餘數 = 0

    {

    leap=0; //指定leap=0

    break; //跳出最近的一個for迴圈

    }

    //到這裡第二個for迴圈結束

    if (leap && m>1 ) //leap==1(若leap為判斷式,則1=成立,0=不成立) &&(且) m>1成立

    {

    printf("%-4d",m); //%4d代表在四個空格裡印出整數 m 的值,印出的值靠右

    //%-4d代表同上,不過印出的值靠左,例:m=2時,%4d→___2;%-4d→2___(_代表空格)

    h++; //h=h+1

    if (h%1==0) //這個不知道你有沒有寫錯..「若h除以1的餘數=0」,

    //因為任何整數除以1的餘數一定是0...如果沒寫錯的話,這行應該可以省略吧 @_@

    printf("\n"); //執行換行

    }

    leap=1; //指定leap=1

    } //第一個for迴圈結束

    system("pause"); //系統暫停,因為用dev-c++編譯,執行完會直接結束,看不到執行結果

    return 0;

    }

    有問題再問吧..雖然我不一定會記得來看 @﹏@||

    2006-11-19 21:54:14 補充:

    有些變數後面好像都沒用到...不知道宣告來幹嘛的 @_@b,r,f,a1,aa 好像都沒用到..整個程式應該是讓使用者輸入a,之後計算1~a之間的質數算法:先計算a的平方根,之後用1~a的平方根之間的數去除 想要檢查的數(以m表示)若可以整除則不是質數(leap=0)之後若leap=1(代表是質數)且m>1則是質數,印出h%1==0 代表 印1個數就換行,若改為h%10==0則表示印10個數之後換行最後leap再設為1,表示預設重新設為質數大概就這樣啦…有問題再問吧

    參考資料: 自己
還有問題?馬上發問,尋求解答。