#include<stdio.h> int my_sequence(int i) { int result = 0; if (i<=0) { return result; } switch(i) { case 1: result = 1; break; case 2: result = 2; break; default: result = (my_sequence(i-1)+my_sequence(i-2)); break; } return result; } void main(void) { int sum = 0; int i = 0; int num = 0; for (;num < 4000000;i++) { num = my_sequence(i); if (num>4000000) { break; } if (num%2 == 0) { sum += num; } } } 感觉先从最小的开始找,如果找到平方根都没有找到就不找了,该数是质数,如果有质因数,除以质因数,继续找,这样应该觉得找得次数可能会少些。
import math as m def isprime(n): if n <= 1: return 0 i=2 while i * i <= n: if n % i == 0: return 0 i += 1 return 1 a = int(input('please enter a number')) b =int(m.sqrt(a)) while b > 0: s = isprime(b) if (a % b ==0) and (s == 1): break b -=1 print(b) 6857