分数拆分问题

该程序旨在找到所有正整数x和y(x>=y),使得数学等式1/k=1/x+1/y成立,其中k是输入的正整数。它通过循环遍历可能的x值,并计算对应的y值,当y为整数时,将这对解存储并输出。最后,程序会打印出所有找到的解的数量及其对应的x和y值。
摘要由CSDN通过智能技术生成

#include<stdio.h>

int main(){
	int k;
	
	int a[1000], b[1000], c[1000];
	scanf("%d", &k);
	if(k <= 0){
		return 0;
	}
	int count = 0;
	
	for(int x = k+1; x <= k*2; x++){
		if(k*x % (x-k) == 0){    //若整除,即是整数, y便可以取此值; 
			int y = k*x/(x-k);    // 公式来源 1/k = 1/x + 1/y; -- m = x-k; 
			a[count] = y;         // 1/k - 1/x = m / k*(k+m) 上下同除以m 然后检查是否为整数 
			b[count] = x;
			count++;
		}
	}
	printf("%d\n", count);
	for(int i = 0; i < count; i++){
		printf("1/%d = 1/%d + 1/%d\n", k, a[i], b[i]);
	}
	return 0;
}

原题: 输入正整数k,遇到文件末尾结束。找到所有的正整数x和y(x大于等于y),使得1/k=1/x+1/y。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值