输出错误的Project Euler 7
Output wrong Project Euler 7
所以我正在尝试Project Euler的问题7。
通过列出前六个素数:2、3、5、7、11和13,我们可以看到第六个素数是13。第1001个素数是什么?
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int a){
if (a==2||a==3){
return true;
}
if (a%2==0){
return false;
}
bool prime=true;
for (int b=2;b<sqrt(a);b++){
if (a%b==0)
prime=false;
}
if (prime==true)
return true;
else
return false;
}
int main(){
int infinite=0;
long long int primecounter=0;
for (int c=2;infinite==0;c++){
if (isPrime(c)==true){
primecounter++;
//cout<<c<<endl;
if (primecounter==10001)
{cout<<c;
break;}
}
}
return 0;}
这就是我到目前为止所想到的。它适用于我测试的少数几个数字,比如第6个素数等。然而,当我对第10001个素数运行它时,它给了我104021,答案是错误的。有人能告诉我我的代码出了什么问题吗?
哪里出错是b < sqrt(a)
。想想a=25,在这种情况下会发生什么?
评论已经指出了答案的其余部分。
尽管这不是这个特定问题所必需的,但您应该看看埃拉托斯特内斯筛算法。你迟早会需要它来解决与素数相关的问题。
您也可以在没有"cmath"帮助的情况下解决它。逻辑就像。。。要检查一个数字是否为素数,请将计数器变量设置为0;写一个循环,把这个数字除以每一个小于它的数字,直到1。如果一个数字将其完全除,计数器将增加一;对于素数,counetr将恰好为2。要计算这么大的数字,你也应该选择一个合适的数据类型。我使用了"long-long-int"作为数据类型。我对项目euler问题7的代码如下。希望它能帮助你。致以最良好的祝愿。欢迎对该程序进行修改和改进。唯一的缺陷是它消耗的时间,达到第10001个素数需要一个多小时。
#include<iostream.h>
#include<conio.h>
class prime
{
long long int a;
long long int j,i;
public:
void display();
};
void prime::display()
{
j=0;
long long int count=0;
long long int count1=0;
while(count1!=10001)
{
j=j+1;
i=j;
while(i!=0)
{
if(j%i==0)
{
count++;
}
i--;
}
if(count==2)
{
count1++;
cout<<count1<<"t"; //The serial number of the prime number.
cout<<j<<"t";// This will diaply all prime numbers till 10001.
}
if(count1==10001)
{
cout<<"nThe 10001th prime number is:"<<j;
}
count=0;
}
}
void main()
{
prime k;
clrscr();
k.display();
getch();
}
相关文章:
- Project Euler问题4的错误解决方案
- Codelite C++ new project
- 最大的回文产品(Project Euler)——C++
- C++ Project Euler 8
- Palindromes And Project Euler C++ Version -Tips
- 13个相邻数字的最大乘积-Project Euler
- 需要您的输入Project Euler Q 8
- Project Euler 138
- Project Euler#11,变量溢出
- Project Euler#8系列中最大的产品
- C++似乎比两个Python Ruby for Project Euler都慢得多
- 输出错误的Project Euler 7
- Project Euler#3获取一个Intellisense表达式,该表达式必须具有整型或无范围枚举类型
- 在C++中求解Project Euler和数3时出错
- Project Euler 114 and 115
- C++字符数(Project Euler 17错误答案)
- Project Euler 009 Problems
- Project Euler 3 (performance)
- 对于Project euler# 22,编译器给出了不同的答案
- visual Project euler# 8c++从初学者