problem 5
Problem 3 のコードの使い回しを行った.
#include <stdio.h> #define SIZE 20 int main() { unsigned int multiples[SIZE][2]; unsigned int primes[SIZE]; int result=1,max=20,n=4,i=2,j=0,k; primes[0]=2; primes[1]=3; for(;n <= max;n+=1) { int f=1; for(k=0;k<i&&f;k++) { f=1; f*=n%primes[k]; } if(f) primes[i++]=n; else { f=1; for(k=i-1;k>=0&&f;k--) { f=1; f*=n%primes[k]; } multiples[j][0]=n; multiples[j++][1]=n/primes[k+1]; } } for(k=0;k<i;k++) { result *= primes[k]; } for(k=0;k<j;k++) { result *= (result%multiples[k][0])?multiples[k][1]:1; } printf("%d\n", result); return 0; }