基本的に、私は projecteuler.net で 3 番目の質問を完了しようとしています。この例では、このプログラム (C で記述) が 5 7 13 29 の素因数ツリーを正確に返す番号 13195 が得られますが、質問番号 600851475143 を入力しても何も起こりません。また、約 1 年前に Python で同様のプログラムを作成し、600851475143 の因子ツリーを解決しました。使用しているデータ型に関係していると思いますが、それに関する信頼できる情報源を見つけることができず、 floats/doubles/big thingies で modulo を行う方法。
ありがとう、
クレメント
コード:
//
// main.c
// Project Euler Question 3
//
// Created by Cwbh on 2/11/13.
// Copyright (c) 2013 Cwbh. All rights reserved.
//
#include <stdio.h>
#include <math.h>
int is_prime(int x);
int main(int argc, const char * argv[])
{
int pft[100];
int number;
int pointerloc = 0;
printf("Enter the number to find the Prime Factor Tree of: ");
scanf("%d", &number);
if (is_prime(number) == 0) {
for (int i = 2; i < number; i++) {
if (number%i == 0 && is_prime(i) == 1) {
pft[pointerloc] = i;
pointerloc++;
}
}
}else{
printf("You've entered a prime number to begin with!");
}
for (int i = 0; i < pointerloc; i++) {
printf("%d\n",pft[i]);
}
return 0;
}
int is_prime(int x){
int prime = 1;
for (int i = 2; i < x; i++) {
if (x%i == 0) {
prime = 0;
break;
}
}
return prime;
}