입력 된 숫자의 소수를 계산하는 프로그램을 코딩하고 있습니다. 소수를 찾는 프로그램을 만들었지 만 거듭 제곱과 같은 값을 쓰고 싶습니다.
if (num < 0)
printf("THIS VALUE IS NOT AVAILABLE TO FIND THE PRIMES");
else {
x = 2;
while (num != 0) {
if (num % x != 0)
x = x + 1;
else {
num = num / x;
printf("%d", x);
if (num == 1)
break;
예를 들어 여기에서 9를 입력하면 3 3이 나오고 3 ^ 2로보고 싶습니다. 대답 해 주시면 감사하겠습니다.
주어진 소수 후보로 나눌 수있는 횟수를 세고 개수가 1보다 크면 지수 형식을 인쇄해야합니다. 작동 방식은 다음과 같습니다.
#include <stdio.h>
void factor(int num) {
unsigned int n, x, count;
int sep = '=';
if (num < 0) {
printf("Cannot handle negative number %d\n", num);
return;
}
printf("%d", num);
for (n = num, x = 2; x * x <= n; x++) {
for (count = 0; n % x == 0; count++) {
n /= x;
}
if (count >= 1) {
printf(" %c %u", sep, x);
sep = '*';
if (count > 1) {
printf("^%u", count);
}
}
}
if (n > 1 || n == num) {
printf(" %c %u", sep, n);
}
printf("\n");
}
int main(void) {
for (int i = 0; i < 100; i++) {
factor(i);
}
for (int i = 0; i < 32; i++) {
factor((1U << i) - 1);
}
return 0;
}
메모:
unsigned
인수 2147483647
(2 31 -1)을 시도 할 때 오버플로를 피하기 위해 산술을 사용했습니다 .main
유형 int
이 32 비트 미만인 경우 함수에 정의되지 않은 동작이있을 수 있습니다 .x++
로 변경하면 스캔 속도를 두 배로 높일 수 있습니다 x += 1 + (x & 1)
.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다