7-1 n과 그 합 (20 점) 내에서 가장 큰 k 개의 소수 찾기

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++;
		}
	}
}

추천

출처blog.csdn.net/xiahuayong/article/details/109146862