fork download
  1. #include<stdio.h>
  2.  
  3. int gcd(int x, int y); // 最大公約数を求める関数
  4.  
  5. int main()
  6. {
  7. int x, y;
  8. int gcd_num;
  9. printf("最大公約数を求めます。\n");
  10. printf("自然数を2つ入力してください。\n");
  11. printf("1つ目の自然数を入力 -> ");
  12. scanf("%d", &x);
  13. printf("2つ目の自然数を入力 -> ");
  14. scanf("%d", &y);
  15.  
  16. gcd_num = gcd(x, y);
  17.  
  18. printf("%dと%dの最大公約数は%dです。\n", x, y, gcd_num);
  19. printf("\n");
  20.  
  21. return 0;
  22. }
  23.  
  24. // 最大公約数を求める関数
  25. int gcd(int x, int y)
  26. {
  27. int r;
  28.  
  29. if(x == 0 || y == 0) // 引数チェック
  30. {
  31. fprintf(stderr, "引数エラーです。\n");
  32. return 0;
  33. }
  34.  
  35. // ユーグリッドの互除法
  36. while((r = x % y) != 0) // yで割り切れるまでループ
  37. {
  38. x = y;
  39. y = r;
  40. }
  41. return y;
  42. }
Success #stdin #stdout 0.01s 5288KB
stdin
1650 2220
stdout
最大公約数を求めます。
自然数を2つ入力してください。
1つ目の自然数を入力 -> 2つ目の自然数を入力 -> 1650と2220の最大公約数は30です。