fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int N;
  5.  
  6. // 使用無窮迴圈來持續讀取輸入,直到遇到終止條件
  7. while (1) {
  8. // 讀取 N 的值
  9. scanf("%d", &N);
  10.  
  11. // 若 N 等於 0,則結束迴圈
  12. if (N == 0)
  13. break;
  14.  
  15. // 初始化 G 的值,G 用來存放所有 GCD 值的總和
  16. long long G = 0;
  17.  
  18. int i, j, a, b, temp;
  19.  
  20. // 外層迴圈,從 i=1 到 i=N-1,依序遍歷每一個 i
  21. for (i = 1; i < N; i++) {
  22. // 內層迴圈,從 j=i+1 到 j=N,遍歷每一個 j,且 j > i
  23. for (j = i + 1; j <= N; j++) {
  24. // 將 i 和 j 的值賦予變數 a 和 b,準備計算 GCD
  25. a = i;
  26. b = j;
  27.  
  28. // 使用輾轉相除法 (歐幾里得算法) 計算 GCD
  29. while (b != 0) {
  30. // 儲存 b 的值,以便下一步操作
  31. temp = b;
  32. // 計算 a 除以 b 的餘數,並賦值給 b
  33. b = a % b;
  34. // 將 b 的值賦值給 a,繼續下一次循環
  35. a = temp;
  36. }
  37.  
  38. // 最後 a 的值即為 GCD(i, j),將其加到 G 中
  39. G = G + a;
  40. }
  41. }
  42.  
  43. // 輸出 G 的值,代表對應 N 的總和 GCD(i, j)
  44. printf("%lld\n", G);
  45. }
  46.  
  47. return 0; // 程式結束
  48. }
Success #stdin #stdout 0.01s 5284KB
stdin
10 100 500 0
stdout
67
13015
442011