新手光能
#include<bits/stdc++.h>
using namespace std;
bool gcd(int a,int b){//求出a、b的最大公约数
int r;
while(a%b!=0){
r=a%b;
a=b;
b=r;
}
if(b>1)
return false;
return true;
}
int main(){
int n;
cin>>n;
cout<<"0/1"<<endl;
for(int i=1;i<=n;i++){
for(int j=2;j<=n;j++){
if(gcd(i,j)&&i*1.0/j<=1&&i!=j)
cout<<i<<"/"<<j<<endl;
}
}
cout<<1<<"/"<<1;
return 0;
}
怎样才能做到分数排序???
初级光能
要核心代码吗?
李鑫羽在2020-07-14 16:48:35追加了内容
核心代码
for(int i=1;i<=n;i++){
for(int j=0;j<=i;j++){
if(gcd(i,j)){
x++;
a[x].m=i;
a[x].z=j;
a[x].s=j*1.0/i;
}
}
}
sort(a+1,a+1+x,cmp);
for(int i=1;i<=x;i++){
cout<<a[i].z<<"/"<<a[i].m<<endl;
}
函数
bool gcd(int x,int y){
int s;
for(int i=1;i<=max(x,y);++i)
{
if(x%i==0&&y%i==0)
s=i;
}
if(s==1) return true;
return false;
}
注意使用结构体
资深守护
1.找到所有分数:
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(f(i,j)||i==1){
c[m].a=i;
c[m].b=j;
m++;
}
}
}
2.排序(建议不用sort,我试过,不对。可以用选择)
注意:
用结构体