#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
int j=2,sum=0,k,n=0;
int d[1000],l=0;
while(1)
{
for(k=2;k<=j;k++)
{
if(j%k==0)
break;
}
if(j==k)
{
sum=sum+j;
n++;
printf("%d\n",j);
}
if(sum>=a)
break;
else
j++;
}
printf("%d",n);
return 0;
}
供参考:
#include<stdio.h>
int isprime(int n)
{
int i;
if (n <= 3)return n > 1;
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int main()
{
int a;
scanf("%d", &a);
int sum = 0, k = 2, n = 0;
while (sum < a)
{
if (isprime(k))
{
sum += k;
n++;
printf("%d\n", k);
}
k++;
}
printf("%d", n);
return 0;
}
如果有个质数是101 , 还有两个质数是3 5 ,那么你这样超过上限就停止的算法是不对的,你要比较,把大的扔掉,选择小的,这样能放更多个