#include<stdio.h>
int main(){
int a,b,i,n=3,count=1,isprime=1,sum=0;
scanf("%d %d",&a,&b);
while(count<b)
{
for(i=2;i<n;i++)
{
if(n%i==0)
{
isprime=0;
break;
}
}
if(isprime==1)
{
count=count+1;
if(count>=a)
sum=sum+n;
}
n++;
}
printf("%d\n",sum);
return 0;
}
uj5u.com熱心網友回復:
演算法有問題,通過追蹤運行來找問題。下面這個代碼提供參考:#include <math.h>
#include <stdio.h>
int IsPrime(int i)
{
int j = 2;
int k = sqrt(i);
if (i < 2)
return 0;
while (j <= k)
{
if (0 == i % j)
{
return 0;
}
++j;
}
return 1;
}
void FindPrime(int* primeArray, int count)// = 200)
{
for (int i = 0, target = 2; i < count; ++target)
{
if (IsPrime(target))
{
primeArray[i] = target;
++i;
}
}
}
int main(void)
{
int primeArray[200] = { 0 };
int m, n, t, sum = 0;
scanf("%d%d", &m, &n);
FindPrime(primeArray, 200);
if (m > n)
{
t = m;
m = n;
n = t;
}
if (n > 200)
{
printf("輸入超范圍");
return 0;
}
for (; m <= n; ++m)
{
sum += primeArray[m - 1];
}
printf("%d", sum);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157007.html
標籤:C語言
上一篇:求個領路人
