为什么我的程序找不到第 10001 个素数? [项目欧拉问题7]
Why doesn't my program find the 10001st prime? [Project euler-problem7]
我的问题是我的程序找不到第 10001 个素数。所以它永远不会停止,我仍然不知道第 10001 个素数。我很乐意通过我的实施来解决问题。谢谢:)
public class problem7 {
public static boolean sonuc=true;
public static void asalmi(int j)
{
int counter=0;
int asayac=0;
for(int k=1;k<=j;k++)
{
if(j%k==0)
{
counter++;
}
}
if(counter==2)
{
// Only factors are 1 and j, so j is prime
System.out.println(j);
asayac++;
counter=0;
if(asayac==10001)
{
System.out.println(j);
sonuc=false;
}
}
}
public static void main(String[] args)
{
int i=1;
while(sonuc)
{
asalmi(i);
i++;
}
}
}
每次调用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
}
我的问题是我的程序找不到第 10001 个素数。所以它永远不会停止,我仍然不知道第 10001 个素数。我很乐意通过我的实施来解决问题。谢谢:)
public class problem7 {
public static boolean sonuc=true;
public static void asalmi(int j)
{
int counter=0;
int asayac=0;
for(int k=1;k<=j;k++)
{
if(j%k==0)
{
counter++;
}
}
if(counter==2)
{
// Only factors are 1 and j, so j is prime
System.out.println(j);
asayac++;
counter=0;
if(asayac==10001)
{
System.out.println(j);
sonuc=false;
}
}
}
public static void main(String[] args)
{
int i=1;
while(sonuc)
{
asalmi(i);
i++;
}
}
}
每次调用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
}