linux c 分解质因数

时间:2023-03-09 22:28:11
linux c 分解质因数
 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> int main(int argc, char **argv)
{
unsigned long long data = , i = , max = ; if (argc < )
{
printf("argument error\n");
return -;
} if (strlen(argv[]) > )
{
printf("out of range\n");
return -;
} data = atoll(argv[]); if (9223372036854775807ULL == data && ('' == argv[][] || '' == argv[][]))
{
printf("out of range\n");
return -;
} printf("data : %llu\n", data);
while ()
{
max = sqrt(data);
for (i = ; i <= max; i++)
{
if ( == (data % i))
{
data = data / i;
printf("%llu * ", i);
fflush(stdout);
break;
}
} if (i > max)
{
printf("%llu", data);
break;
}
}
printf("\n"); return ;
}

实现了2^64-1以下数字的求质因数,

编译时报错undefined reference to `sqrt'

man了下 发现编译时要加-lm