[英]C program to find the trailing ZEROS at the end of a FACTORIAL of a given number
[英]Number of Trailing Zeros in a Factorial in c
我是C語言編程的新手,我想找出給定數階乘中的尾隨零數
{
long int n=0,facto=1,ln=0;
int zcount=0,i=1;
printf("Enter a number:");
scanf("%ld",&n);
if(n==0)
{
facto=1;
}
else
{
for(i=1;i<=n;i++)
{
facto=facto*i;
}
}
printf("%ld",facto);
while(facto>0)
{
ln=facto%10;
facto/10;
if(ln=!0)
{
break;
}
else
{
zcount+=1;
}
}
printf("Tere are Total %d Trailing zeros in given factorial",zcount);
}
我試圖計算數字的模數,該模數將返回給定數字的最后一位作為余數,然后返回n/10;
將刪除最后一個號碼。
執行程序后,輸出始終將尾隨零的數目顯示為“ 0”,即使存在零也始終滿足條件if(ln =! 0)
。
讓我們記住數學( Wiki ):
int trailingZeroCountInFactorial(int n)
{
int result = 0;
for (int i = 5; i <= n; i *= 5)
{
result += n / i;
if(i > INT_MAX / 5) // prevent integer overflow
break;
}
return result;
}
這個
if(ln=!0)
表示ln = !0
即您為ln
分配了!0
,因此條件始終為true,將其更改為
if (ln != 0)
您可以將賦值用作真值,但是如果您確定這樣做的話。
為防止意外執行,請打開編譯器警告。
中的正確語法
if(ln!=0)
{
// do something
}
在if ( ln=!0 )
,首先對!0
求值,然后=
為ln
分配!0
(即1
),然后if
檢查ln
的值,如果該值不為零(在這種情況下為1
到先前的分配),然后執行break
語句。
同樣,此方法不適用於大於25的數字。很明顯, n!
中5的冪n!
將會是答案。
下面的表達式給出n!
素數p
的冪n!
: f(n/p) + f(n/p^2) + f(n/p^3) + ..... (until f(n/p^k) return zero
,其中f(a)
返回的最大整數a
或地板a
package lb;
import java.util.Scanner;
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int a=n/5;
if(a<5)
{
System.out.println(a);
}
else
{
int c=a/5+a;
System.out.println(c);
}
}
}
嘗試這個
int trailingZeroCountInFactorial(int n)
{
int result = 0;
for (int i = 5; i <= n; i *= 5)
{
result += n / i;
}
return result;
}
要了解,它是如何工作的,有一個很好的解釋在這里
{
long int n=0,facto=1,ln=0;
int zcount=0,i=1;
printf("Enter a number:");
scanf("%ld",&n);
if(n==0)
{
facto=1;
}
else
{
for(i=1;i<=n;i++)
{
facto=facto*i;
}
}
printf("%ld\n",facto);
while(facto>0)
{
ln=(facto%10);
facto/=10; //here you done one mistake
if(ln!=0) //another one here
{
break;
}
else
{
zcount+=1;
}
}
printf("Tere are Total %d Trailing zeros in given factorial",zcount);
} / 運行此代碼,它將立即運行,您已經知道的錯誤我猜 /
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.