Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';难道我的程序找不到第10001个素数吗?[项目euler-problem7]_Java_Primes - Fatal编程技术网

Java 为什么';难道我的程序找不到第10001个素数吗?[项目euler-problem7]

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&

我的问题是我的程序找不到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>
            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

            }