summaryrefslogtreecommitdiff
path: root/euler60.c
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-05-24 21:39:58 +0800
committerIru Cai <mytbk920423@gmail.com>2018-05-24 21:39:58 +0800
commit1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db (patch)
treeabde0e4da3c7fe138f3874a94d8eb7d0e44c3224 /euler60.c
downloadproject_euler-1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db.tar.xz
initial commit
Diffstat (limited to 'euler60.c')
-rw-r--r--euler60.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/euler60.c b/euler60.c
new file mode 100644
index 0000000..3bc933c
--- /dev/null
+++ b/euler60.c
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#define NP 10000
+
+int primetab[NP];
+
+void genprimes()
+{
+ int i=2,j;
+ primetab[0] = 2;
+ primetab[1] = 3;
+
+ while (i<NP) {
+ primetab[i] = primetab[i-1]+2;
+ for (j=0; j<i; j++) {
+ if (primetab[i]%primetab[j]==0) {
+ // try next
+ primetab[i] += 2;
+ j=-1;
+ continue;
+ }
+ }
+ i++;
+ }
+}
+
+void search(int depth)
+{
+ static int result[5]={0,0,0,0,0}, bestsum=0;
+
+ int s=0,i;
+
+ if (depth==5) {
+ for (i=0; i<5; i++) {
+ printf("%d ", primetab[result[i]]);
+ }
+ printf("best=%d\n", bestsum);
+ }
+
+ for (i=0; i<depth; i++) {
+ s += primetab[result[i]];
+ }
+ if (bestsum && s>bestsum) return;
+
+ if (depth==0) {
+ result[0] = 1;
+ } else {
+ result[depth] = result[depth-1]+1;
+ }
+ if (result[depth]>=NP) {
+ return;
+ }
+
+ while (result[depth]<NP) {
+ // check if it's ok
+ }
+
+}
+
+int main()
+{
+ genprimes();
+ int i;
+
+ for (i=0; i<1000; i++) {
+ printf("%d\n", primetab[i]);
+ }
+ return 0;
+}