如何在C中计算for循环中数字的幂?



我创建了一个质因数分解程序。然而,我需要输出包含质数的幂,所以输出不是:2.2.2.3,它应该是2^3.3

唯一的问题是指数不是它们应该是什么。我不知道错在哪里。

这是我的for循环:

#include <stdio.h>
int main(){
int num, val, i, prime=0, check, check2, count=0, counter=1;
while(num != 0){
printf("nInput number: ");
scanf("%d", &num);
val=num;
for(i=2; i<=num; i++){
if(num%i==0){
count++;
if(count==1 && val!=i){
check=i;
}
else if(val!=i){
check2=i;
}
else{
prime=1;
printf("%d is prime", val);
}
num/=i;
if(check==check2){
counter++;
}
if(prime==0){
if(count==1){
if(counter==1)
printf("%d", i);
else
printf("%d^%d", i, counter);
} else if(check!=check2){
if(counter==1)
printf(".%d", i);
else
printf(".%d^%d", check2, counter);
counter=1;
}
}
i=1;
}
prime=0;
}
counter=1;
printf("n-------------------");
count=0;
}
printf("-------------------nEnd");
return 0;
}

解决方案其实很简单。我正在用另一个for循环计算功率,该循环检查我可以除以该数字多少次。

for(i=2; i<=num; i++){
if(num%i==0){
for(i; num%i==0; count++){
num/=i;
}
printf("%d %d", i, count);
i=1;
count=0;
}
}

最新更新