原题链接:C语言训练-列出最简真分数序列*
#include<stdio.h>
static int i,b,yin1,yin2,yin3,yin4,yin5,yin6,yin7,yin8,yin9,me,panduan;//me待求最小因数,yin1,yin2,yin3等是me的因数
int y() {
yin3=yin2=yin1=yin4=yin5=yin6=yin7=yin8=yin9=1;//初始化因数
if(i==1) {
yin1=1;
return 0;
}
for(b=2; b<me; b++) {
if(me%b==0&&yin1!=1&&yin2!=1&&yin3==1) {
yin3=b;
continue;
}
if(me%b==0&&yin1!=1&&yin2==1&&yin3==1) {
yin2=b;
continue;
}
if(me%b==0&&yin1==1&&yin2==1&&yin3==1) {
yin1=b;
continue;
}
if(me%b==0&&yin3!=1&&yin4==1) {
yin4=b;
continue;
}
if(me%b==0&&yin4!=1&&yin5==1) {
yin5=b;
continue;
}
if(me%b==0&&yin5!=1&&yin6==1) {
yin6=b;
continue;
}
if(me%b==0&&yin6!=1&&yin7==1) {
yin7=b;
continue;
}
if(me%b==0&&yin7!=1&&yin8==1) {
yin8=b;
continue;
}
if(me%b==0&&yin8!=1&&yin9==1) {
yin9=b;
continue;
}
}
}
int main(void) {
printf("请输入一个整数,求以它为分母的最简分数:");
scanf("%d",&me);//输入待求因数
y();
printf("以%d为分母的最简分数有:",me);//提示
for(i=1; i<me; i++) {
panduan=1;
if(i%yin1==0) {
panduan=0;
}
if(i%yin2==0&&yin2!=1) {
panduan=0;
}
if(i%yin3==0&&yin3!=1) {
panduan=0;
}
if(i%yin4==0&&yin4!=1) {
panduan=0;
}
if(i%yin5==0&&yin5!=1) {//如果缓冲数i除以me任意一个非1的因数的余数存在则panduan为假
panduan=0;
}
if(i%yin6==0&&yin6!=1) {
panduan=0;
}
if(i%yin7==0&&yin7!=1) {
panduan=0;
}
if(i%yin8==0&&yin8!=1) {
panduan=0;
}
if(i%yin9==0&&yin9!=1) {
panduan=0;
}
if(panduan==1||yin1==1) {
printf("%d/%d,",i,me);//判断为真时候输出
}
}
} 0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复