English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

#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

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

fedest.com, questions and answers