互質環
阿新 • • 發佈:2018-12-08
題目描述:
給你一個環,環上有從n到m的連續遞增的數字,問有幾對相鄰的數字是互質的。 環的形狀具體如下:
輸入描述:
多組測試樣例,每組測試樣例包含兩個正整形n和m。表示環上的數字。(0<n<=m<=100000000)。
當m和n都為0時結束。
輸出描述:
對於每組測試樣例,輸出相鄰互質的數字的對數。
樣例輸入:
2 4
0 0
樣例輸出:
2
對於本題,關鍵的是知道什麼是互質,互質就是兩個數的最大公約數是1,那麼這個時候就需要使用輾轉相除法了。
不過這個的前提是M和N的差應該大於一,不然會造成重複計算的情況。
#include<stdio.h> int main() { int n,m; while(~scanf("%d%d",&n,&m)&&(m||n)) { int num1=m; int num2=n; if(m==n) { printf("0\n"); } else { int c; if(m-n>1) while(n) { c=m%n; m=n; n=c; } if(m==1) { printf("%d\n",num1-num2+1); } else { printf("%d\n",num1-num2); } } } return 0; }