在執行a[h]=0;
a[i/100]=1;
a[i/10%10]=1;
a[i%10]=1;
這就是將a、b、c分離開來分別在a[a],a[b],a[c]中標記為1;
j=i*2;
a[j/100]=1;
a[j/10%10]=1;
a[j%10]=1;
這裏是把abc乘以2後依舊把新產生的a1,b1,c1分離開來在相應的a[a1],a[a2],a[a3]中標記為1;
以下j=i*3也是如此。
這裏要明白a[]這個數組是幹什麽的,它表示的意思是,如果a[n]處被標記為1,則數abc及其2倍數,3倍數中必有壹位是n;
所以s是計算a[n]中有幾個1的,既然要都是不重復的數字,那a[n]中1的個數必須為9,小於9即表示abc及其2倍數、3倍數中至少有2個數字重復標記了壹次同壹個a[n]為1;
至於開始處的a[h]=0;那是for循環開始處對數組a[]的每壹個元素做0初始化,妳這樣看就能比較明白
for(h=1;h<10;h++)
a[h]=0;
這是刪除for循環後部分代碼的縮寫,它使得a[h]的意義清晰起來,是讀復雜程序的常用手法之壹,關鍵在於刪除多余部分時不得改變剩下的語句的執行過程;
如還有疑問請補充,如無就給我分吧,全手打,累死我了