من امروز سوال projecteuler #10 رو حل میکردم
برای برنامه اولم نوع متغیر رو long گرفتمکد://************************ // Bagheri. Naser //ProjectEuler Problem #10 //************************ #include <iostream> #include <cmath> using namespace std; bool check(long n) { if(n == 2) return true; else if(n == 1) return false; if(n % 2 == 0) return false; for(int i = 3; i <=sqrt(n); i += 2) { if(n % i == 0) return false; } return true; } int main() { long sum =0; for(long i = 2; i<2000000; i++) { if(check(i)==true) {sum += i;} } cout<<sum; return 0;}
جواب میشه :1179908154 که submit نمیشه؟
اما برنامه دوم که از نوع متغیر long long استفاده کردم
کد://************************ // Bagheri. Naser //ProjectEuler Problem #10 //************************ #include <iostream> #include <cmath> using namespace std; bool check(long long n) { if(n == 2) return true; else if(n == 1) return false; if(n % 2 == 0) return false; for(int i = 3; i <=sqrt(n); i += 2) { if(n % i == 0) return false; } return true; } int main() { long long sum =0; for(long long i = 2; i<2000000; i++) { if(check(i)==true) {sum += i;} } cout<<sum; return 0;}
که جواب میشه 142913828922 که submit میشه!
کد ها شبیه هم هستند اما فقط یه long فرق داره
کامپایلر g++
حالا علت چیست؟
اگه کسی میدونه توضیح بده؟
علاقه مندی ها (Bookmarks)