C语言高手帮忙看看这道题的答案有什么错误,提交到自动评测系统里总是说错误,附上题目和我的答案,谢谢
【问题描述】
将N!分解成质因数幂的乘积。
【输入形式】
从标准输入读取一个整数N(1<=N<=30000)。
【输出形式】
将结果写到标准输出。输出结果格式为:p1^k1*p2^k2*…*pn^kn,其中: 1. N! = p1^k1*p2^k2*…*pn^kn; 2. pi为质数,(1 <= i <= n); 3. pi < pj,(1 <= i < j <= n); 4. ki为整数且ki > 1,(1 <= i < j <= n)。
【输入样例】
5
【输出样例】
2^3*3*5
【时间限制】
1s
【空间限制】
65536KB
【上传文件】
上传c语言源程序,文件名为decompose.c。
我编写的答案程序:
//
// decompose.c
//
#include <stdio.h>
#include <math.h>
int times(int n,int x)
{
if (n == 0) return 0;
return (n/x) + times (n/x, x);
}
int isPrime(int num)
{
int i;
if( num < 2) return 0;
for(i = 2;i <= sqrt(num); i++) {
if(num % i == 0) return 0;
}
return 1;
}
int main()
{
int n;
scanf("%d", &n);
int i, flag = 0;
if (n == 1) {
printf("1\n");
return 0;
}
for (i = 2; i <= n; i++) {
if (isPrime(i)) {
int counter = times(n, i);
if (counter == 1) {
if (flag) printf("*");
printf("%d", i);
flag = 1;
}else {
if (flag) printf("*");
printf("%d^%d", i, counter);
flag = 1;
}
}
}
printf("\n");
return 0;
}
评测系统返回的编译结果:
编译错误!
Compile Information :
/tmp/ccrMYeq4.o: In function
`main':
decompose.c:(.text+0x17d): undefined reference to `sqrt'
collect2:
ld returned 1 exit status 展开
我来教你。我要悬赏分哟,我可是穷人。。。新手
帮你搞定了,只需要改动一个语句就好了。
#include <stdio.h>
#include <math.h>
int times(int n,int x)
{
if (n == 0) return 0;
return (n/x) + times (n/x, x);
}
int isPrime(int num)
{
int i;
if( num < 2) return 0;
for(i = 2;i <= sqrt(num); i++) {
if(num % i == 0) return 0;
}
return 1;
}
int main()
{
int i,flag=0,n;
scanf("%d",&n);
if (n == 1) {
printf("1\n");
return 0;
}
for (i = 2; i <= n; i++) {
if (isPrime(i)) {
int counter = times(n, i);
if (counter == 1) {
if (flag) printf("*");
printf("%d", i);
flag = 1;
}else {
if (flag) printf("*");
printf("%d^%d", i, counter);
flag = 1;
}
}
}
printf("\n");
return 0;
}