C\#4.0 대수 연산--BigInteger 의 응용 상세 설명
4710 단어 대수 연산biginteger
private static bool IsPrime()
{
string largeNumber = @"30000000000000000000000...000000001”;
BigInteger bigInteger = BigInteger.Parse(largeNumber);
if (bigInteger.IsEven)
{
return false;
}
for (BigInteger bi = 3; BigInteger.Pow(bi, 2) <= bigInteger; bi += 2)
{
if (bigInteger % bi == 0)
{
return false;
}
}
return true;
}
원래 for 순환 중의 코드 는
for (BigInteger bi = 3; bi <= BigInteger.Sqrt(bigInteger); bi += 2)
{
if (bigInteger % bi == 0)
{
return false;
}
}
안 타 깝 게 도 BigInteger 는 Sqrt 방법 을 지원 하지 않 기 때문에 바 꾸 었 습 니 다.for (BigInteger bi = 3; BigInteger.Pow(bi, 2) <= bigInteger; bi += 2)
결 과 는 다음 그림 과 같다.
'300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2:C 언어 중 에 전형 적 인 제목 은 100 을 구 하 는 것 입 니 다!뒤에 몇 개 있어 요?
BigInteger 를 모른다 면 어떻게 해 야 하나 요?
100! 로 이해 할 수 있다
짝수 가 5 보다 많 기 때문에 i 값 이 j 값 보다 많 기 때문에 100 을 구 합 니 다!몇 개의 0 이 있 는 지 는 j 의 값 을 구 하 는 것 이 라 고 볼 수 있다.
물론 공식 으로 도 가능 합 니 다.
Sum = [100/5]+[100/(5^2)]+[100/(5^3)]=20+4+0=24;
만약 당신 이 생각 도 공식 도 없다 면 머 릿 속 에 한 가지 생각 만 있 습 니 다.1*2*3*4*5*..*100 의 for 순환,그리고 0 의 수량 을 통계 하면 4.0 에서 도 실현 할 수 있 습 니 다.속도 가 느 린 것 같 지만 답 을 얻 을 수 있 습 니 다.
코드 는 다음 과 같 습 니 다:
통계 의 코드 는 다음 과 같다.
운행 결 과 는 다음 과 같다.
int count = 0;
for (int i = strSum.Length - 1; i >= 0; i--)
{
if (strSum[i] == '0')
{
count++;
}
else
{
break;
}
}
아직도 많은 수의 연산 을 사용 하 는 곳 이 있 습 니 다.당신 의 발 휘 를 기다 리 고 있 습 니 다!