For loop c++;最低公倍数循环

For loop c++;最低公倍数循环,for-loop,lcm,For Loop,Lcm,我在这项任务中遇到了一些问题:你读取prom文件“perechi.in”中的数字n,你必须在文件“perechi.out”中写入LCM与n相等的数字对。我写了那段代码,但它崩溃了,我无法找出问题所在 #include <iostream> #include <fstream> using namespace std; int main() { int a, b, c, ca, cb, i = 0, n; ifstream f("perechi

我在这项任务中遇到了一些问题:你读取prom文件“perechi.in”中的数字n,你必须在文件“perechi.out”中写入LCM与n相等的数字对。我写了那段代码,但它崩溃了,我无法找出问题所在

 #include <iostream>
    #include <fstream>

using namespace std;

int main()
{
    int a, b, c, ca, cb, i = 0, n;
    ifstream f("perechi.in");
    ofstream g("perechi.out");
    f >> n;
    for (a = 1; a<n; a++){
        for (b = 1; b<n; b++){
            ca = a;
            cb = b;
            c = ca%cb;

            while (c>0){
                ca = cb;
                cb = c;
                c = ca%cb;
            }
            if (ca*cb / c == n){
                i++;
            }
        }
    }
    g << i << "\n";
    f.close();
    g.close();
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int a,b,c,ca,cb,i=0,n;
IFF(“perechi.in”);
g流(“perechi.out”);
f>>n;

对于(a=1;a,代码中有两个逻辑错误

1)
while
2)
if(ca*cb/c==n){

请尝试以下代码

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    int a, b, c, ca, cb, i = 0, n;
    ifstream f("perechi.in");
    ofstream g("perechi.out");
    f >> n;
    for (a = 1; a<=n; a++){
        for (b = 1; b<=n; b++){
            ca = a;
            cb = b;
            c = ca%cb;

            if (c>0){
                ca = cb;
                cb = c;
                c = ca%cb;
            }
            if (ca*cb  == n){
                i++;
            }
        }
    }
    g << i << "\n";
    f.close();
    g.close();
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int a,b,c,ca,cb,i=0,n;
IFF(“perechi.in”);
g流(“perechi.out”);
f>>n;

对于(a=1;a您的
while
循环在
c==0
时结束。因此
ca*cb/c
除以0。这就是问题所在。谢谢!是的,while的更改效果更好。但是当我想将解决方案发送给您时,我得到0分,这意味着什么?如果此解决方案有效,那么您应该对其进行投票。然后单击“确定”。