Member 7749270 Ответов: 2

нахождение уникальных простых множителей n


Я пытаюсь найти уникальные простые множители n, так что если n = 126, то простые числа равны 2 3 3 7, а уникальные-2 3 7

У меня возникли проблемы с тем, чтобы убрать лишние три.
int findPrime(unsigned long n)
{
  int testDivisor, i;
  testDivisor = 2;
  i = 0;
  int ii = 0;
  while (testDivisor < n + 1)
  {
    while ((n % testDivisor) == 0)
    {
      prime[ii] = testDivisor;
      if (DEBUG == 1) printf("prime[%d] = %d\n", i, prime[i]);
      i++;
      n = n / testDivisor;
    }
    testDivisor++;
  }

}

2 Ответов

Рейтинг:
2

Sandeep Mewara

Для того, чтобы - У меня проблемы с тем, чтобы убрать лишние три штуки.", вам нужно сначала сохранить простые множители в массиве или около того, а затем выбрать из него уникальные для печати. Или распечатайте его как и когда найдете, но следите за ним так, чтобы, если он уже был напечатан, вы его игнорировали.


Espen Harlinn

Разумный :)

Рейтинг:
1

Zeeking99

Я написал программу, которая решает вашу проблему. Я создал еще одну переменную, которая не позволяет программе печатать те же самые факторы.

#include<stdio.h>

primefactors(unsigned long a)
{
	int prime_factor = 2, nodoublefactor = 0;
	
	while(a!=1)
	{
			while(a%prime_factor == 0)
			{
				a = a/prime_factor;
				
				if(nodoublefactor!=prime_factor)
				{
					printf("%d ",prime_factor);
					
					nodoublefactor = prime_factor;
				}
			}
			prime_factor++;
	}
}

main()
{
	unsigned long number_given_by_user; 
	
	printf("Enter a number to find it's unique prime factors : ");
	scanf("%lu",&number_given_by_user);
	
	primefactors(number_given_by_user);
}


CPallini

Вы очень добры: ОП ждет вашего решения с 2011 года.

Zeeking99

Спасибо за комплимент, но у меня есть вопрос. Кто такой ОП? Я новичок на этом форуме, так что извините меня.

CPallini

Оригинальный Плакат.

Zeeking99

О, спасибо за это.