7-1 n과 그 합 (20 점) 내에서 가장 큰 k 개의 소수 찾기
이 질문은 가장 큰 k 개의 소수와 n을 초과하지 않는 그 합을 계산하고 출력해야합니다.
입력 형식 :
n (10≤n≤10000)과 k (1≤k≤10)의 값을 한 줄에 입력합니다.
출력 형식 :
한 줄에 다음 형식으로 출력 :
소수 1+ 소수 2 +… + 소수 k = 합계 값
소수는 내림차순으로 출력됩니다. n 내에 k 개의 소수가 충분하지 않으면 실제 숫자가 출력됩니다.
입력 예 1 :
1000 10
출력 예 1 :
997 + 991 + 983 + 977 + 971 + 967 + 953 + 947 + 941 + 937 = 9664
입력 예 2:12
6
출력 예 2 :
11 + 7 + 5 + 3 + 2 = 28
#include <stdio.h>
int main()
{
int n,k,i,j,sum=0,flag=0,x=1,a[]={
0};
scanf("%d%d",&n,&k);
for(i=n;i>1;i--) //因为下面的素数算法有点瑕疵,所以把循环条件设置成i>1
{
for(j=2;j<i;j++)
{
if(i%j!=0) //1不是素数,而这里1是漏网之鱼
flag=1;
else
{
flag=0;
break;
}
}
if(flag)
{
sum+=i;
if(x<=k)
printf("%d",i);
if(x==k || i==2)
{
printf("=%d",sum);
break;
}
else if(i!=2)
printf("+");
x++;
}
}
}