c - 如何使用循环找到一对也加起来一定和的除数?
问题描述
给定两个数,n 和 q,我想找到两个数,m 和 p,使得 n=m*p 和 q=m+p。我编译了代码,但每次都返回错误消息,即使输入的值是有效的。循环有问题吗?
编辑** 输入 n:100 输入 q:25
即使 m=20, p=5 有效,仍然返回错误消息
#include <stdio.h>
int main(void){
int *mAddress = NULL;
int *pAddress = NULL;
int n;
printf("enter integer: ");
scanf("%d", &n);
int q;
printf("enter query number: ");
scanf("%d", &q);
int m;
int p;
for (m=1; m<=n; m++){
if(n%m == 0){
p = n/m;
if (m+p == q){
mAddress = &m;
pAddress = &p;
printf("The values are %d %d", m, p);
break;
}
else{
printf("could not find any numbers");
break;
}
}
}
解决方案
如果你第一次没有找到它,你不应该打破循环。相反,您应该继续为每种情况发生这种n%m == 0
情况。
最终,当您知道没有找到任何东西时,打印错误消息。
如果您找到了一对,我添加了一个 bool 来保存,并使用它来打印错误消息。
#include <stdio.h>
#include <stdbool.h>
int main(void){
int *mAddress = NULL;
int *pAddress = NULL;
int n;
printf("enter integer: ");
scanf("%d", &n);
int q;
printf("enter query number: ");
scanf("%d", &q);
int m;
int p;
bool found = false;
for (m=1; m<=n; m++){
if(n%m == 0){
p = n/m;
if (m+p == q){
mAddress = &m;
pAddress = &p;
printf("The values are %d %d", m, p);
found = true;
break;
}
}
}
if (!found) {
printf("could not find any numbers");
}
}
推荐阅读
- python - 沿水平变量的矢量化选择
- r - 从多列重新创建条形码/ID 变量
- java - 切换活动时出现Logcat错误导致应用程序在按下按钮后崩溃
- emacs - 如何将 ctrl+D 发送到 Emacs 的 Eshell?
- laravel - 除以零 laravel
- .net - 如何访问弹出框内的循环变量?
- javascript - JavaScript RegEx - 首先匹配一个表达式,然后是另一个
- java - 如何在输出中获取输入词?开始 Java
- shell - 无法通过符号链接运行 Visual Studio 代码脚本
- javascript - D3 - 使用来自 JSON 的颜色作为图表