Java 为什么';难道我的程序找不到第10001个素数吗?[项目euler-problem7]
我的问题是我的程序找不到10001素数。所以它永远不会停止,我仍然不知道第10001个素数。我很乐意通过我的实施来解决这个问题。谢谢:)Java 为什么';难道我的程序找不到第10001个素数吗?[项目euler-problem7],java,primes,Java,Primes,我的问题是我的程序找不到10001素数。所以它永远不会停止,我仍然不知道第10001个素数。我很乐意通过我的实施来解决这个问题。谢谢:) 公共类问题7{ 公共静态布尔sonuc=true; 公共静态无效asalmi(int j) { int计数器=0; int asayac=0; 对于(int k=1;k每次调用asalmi时,都会将局部变量asayac设置为0。这应该是一个静态变量,而不是局部变量。c程序以查找第10001个素数 #include<stdio.h&
公共类问题7{
公共静态布尔sonuc=true;
公共静态无效asalmi(int j)
{
int计数器=0;
int asayac=0;
对于(int k=1;k每次调用asalmi时,都会将局部变量asayac设置为0。这应该是一个静态变量,而不是局部变量。c程序以查找第10001个素数
#include<stdio.h>
isPrime(int x){
int i;
for(i=2;i<=x/2;i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int n=3;
int counter=1;
while(counter!=10001){
if(isPrime(n)==1) counter++;
n=n+2; // possibility of next prime is by adding 2 to current
}
printf("counter=%d\n",counter);
printf("number is:%d\n",n-2); //-2 due to unwanted increment in loop
}
#包括
iPrime(int x){
int i;
for(i=2;iIt不会因为您的程序无法在短时间内达到10001素数而停止。您必须改进算法为什么要退出?10001是复合的:73x137,而且由于您的for()
循环有不正确的边界,您正在计算1
和10001
以及因子,因此该数字的count
将为4。因为您只测试count==2,所以您永远不会达到if(asayac=10001)
。这不完全正确-他不是在测试10001是否为素数,而是在寻找第10001个素数-即尝试将asayac
作为一个总计数器。它不能作为注释工作,但即使进行了更正,它也将是超低的,因为它需要进行大量的计算。
#include<stdio.h>
isPrime(int x){
int i;
for(i=2;i<=x/2;i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int n=3;
int counter=1;
while(counter!=10001){
if(isPrime(n)==1) counter++;
n=n+2; // possibility of next prime is by adding 2 to current
}
printf("counter=%d\n",counter);
printf("number is:%d\n",n-2); //-2 due to unwanted increment in loop
}