#include
main()
{
unsigned int i, j, n, p = 0, prime[3512];
clrscr();
printf("Input a postion number(2-32767):");
scanf("%d",&n);
if (n >= 2 && n <= 32767)
{
printf("calcution......");
for (i=2;i>=2,i<=n;i++)
{
for (j=2;j>=2,j<=i;j++)
{
if (i%j == 0)
{
if (j == i)
{
prime[p] = i;
p++;
}
else
break;
}
}
}
delline();
printf("\r%d=",n);
i=0;
while(n != 1)
{
if (n%prime[i] == 0)
{
n = n/prime[i];
printf("%d",prime[i]);
if (n != 1) printf("*");
}
else
i++;
}
}
else
{
printf("overflew (2-32767)");
getch();
return;
}
getch();
}
執行結果為連乘~~ex:128=2*2*2*2*2*2*2~~
5624=2*2*2*19*37
可不可改這個程式讓128=2*2*2*2*2*2*2、5624=2*2*2*19*37變成128=2(7)、5624=2(3)19(1)37(1)
我希望用Turbo C~~不是C++ㄉ
2005-05-01 19:41:45 · 1 個解答 · 發問者 永慶 1 in 電腦與網際網路 ➔ 程式設計
128=2(7)、5624=2(3)19(1)37(1)
意思是輸出是128=2^7、5624=2^3*19^1*37^1
2005-05-01 19:43:52 · update #1
我把你的程式修改如下: unsigned int i, j, n, p = 0, prime[3512], k; // 增加一個變數 k 記錄乘冪 k=0; // 乘冪歸零 while(n != 1) { if (n%prime[i] == 0) { n = n/prime[i]; if (k==0) // 若為第一次則列印基數 printf("%d",prime[i]); if (n != 1) // printf("*"); k++; // 原本列印星號改為乘冪加一 } else { if (k!=0) printf("(%d)",k); // 若乘冪不為零則列印前一次的乘幕 k=0; // 乘冪歸零 i++; } } printf("(%d)",k+1); // 列印最後一個的乘冪
2005-05-01 21:07:04 · answer #1 · answered by ? 7 · 0⤊ 0⤋