Beispiel #1
0
static void report_factor(uint32_t subseq, uint32_t n, uint64_t p)
{
  uint64_t k;
  int64_t c;

  k = SEQ[SUBSEQ[subseq].seq].k;
  c = SEQ[SUBSEQ[subseq].seq].c;

  if (check_opt && !is_factor(k,c,n,p))
    error("%"PRIu64" DOES NOT DIVIDE %s.",p,kbnc_str(k,base,n,c));

  factor_count++;
  remaining_terms--;
  SUBSEQ[subseq].mcount--;
  if (SUBSEQ[subseq].mcount == 0)
    notify_event(subsequence_eliminated);

  if (p < min_factor_to_report)
    return;

  record_factor_time();
  save_factor(k,c,n,p);

  report("%"PRIu64" | %s",p,kbnc_str(k,base,n,c));
}
Beispiel #2
0
int is_prime(ULONG number)
{
	ULONG c = number / 2;
	if(c % 2 == 0)
		c++;

	for(c; c > 1; c -= 2)
	{
		if(is_factor(c, number))
			return 0; /* is not a prime */
	}

	return 1; /* is a prime */
}
Beispiel #3
0
static void report_duplicate_factor(uint32_t seq, uint32_t n, uint64_t p)
{
  uint64_t k;
  int64_t c;

  k = SEQ[seq].k;
  c = SEQ[seq].c;

  if (check_opt && !is_factor(k,c,n,p))
    error("%"PRIu64" DOES NOT DIVIDE %s (duplicate).",p,kbnc_str(k,base,n,c));

  if (p >= min_factor_to_report && n <= n_max)
    report("%"PRIu64" | %s (duplicate)",p,kbnc_str(k,base,n,c));
}
Beispiel #4
0
void main() {
	ULONG i = NUMBER / 2;
	ULONG half = NUMBER / 2;
	if(i % 2 == 0)
		i++;

	for(i = 1; i < half; i += 2)
	{
		//printf("number: %lu\n",i);
		if(is_factor(i, NUMBER))
		{
			printf("factor number: %lu\n",i);
			if(is_prime(i))
			{
				printf("\tprime number: %lu\n",i);
				//break;
			}
		}
	}

	printf("largest prime factor=%lu\n",i);
}