-3

我的算法的主要问题是什么,我需要找到从 1 到 20 的最小正数,没有除法器...

#include <stdio.h>
#include <stdbool.h>

int main(int argc,char* argv[])
{
int num,j=2;
int saveNum=20;
bool flag = false;
while(!flag)
{
    num = saveNum;
    while(num%j==0 && j<=20)
    {
        num /= j;
        j++;
    }
    if(j>20)
        flag = true;
    else
    {
     saveNum++;
     j=1;
    }
}
printf("Done");
printf("%d",saveNum);
}
4

1 回答 1

0

您是否错过了printf查看中间结果的信息?这可能会帮助您了解内部发生的情况。

但我真的不明白你要解决什么。你想要结果:2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20

因为我认为这就是你目前正在计算的。但是,您会在到达那里之前溢出,并且迭代到该点将花费您一段时间。

相反,如果您试图找到可以被小于或等于 20 的每个数字整除的最小数字,那么您可能需要重新访问num /= j.

于 2013-10-06T22:46:39.280 回答