最简真分数--C++实现

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/zhang__shuang_/article/details/87600265

题目描述

给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。

输入描述:

每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。

输出描述:

每行输出最简真分数组合的个数。

输入

7
3 5 7 9 11 13 15

输出

17 

C++实现:

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int num[n];
        for(int i=0;i<n;i++){
            cin>>num[i];
        }
        int sum=0;
        for(int i=0;i<n-1;i++){
            for(int j=i+1;j<n;j++){
                int Min=num[i]>num[j]?num[j]:num[i];
                int Max=num[i]>num[j]?num[i]:num[j];
                if(Max%Min!=0){
                    int flag=0;
                    //注意此处k最大边界为Min,而不是sqrt(Min)
                    for(int k=2;k<=Min;k++){
                        if(Min%k==0&&Max%k==0){
                            flag=1;
                            break;
                        }
                    }
                 if(!flag)
                    sum+=1;
                }
            }
        }
        cout<<sum<<endl;
    }
}

猜你喜欢

转载自blog.csdn.net/zhang__shuang_/article/details/87600265