恳请大佬帮忙指正这段代码的问题
#include<bits/stdc++.h>
using namespace std;
int k,n,s,c = 1,number;
int visit[21],num[21],result[21],all[21];
int sum(int a,int ans[])//求和函数
{
for (int i1 = 1;i1 <= a;i1 ++)
{
s += ans[i1];
}
return s;
}
void dfs(int deep)//深搜函数
{
int i2;
if (deep > k)//搜索到底
{
result[c] = sum(k,num);//求和
c ++;
}
else
{
for (i2 = 1;i2 <= n;i2 ++);
{
number = all[i2];//选数
if (!visit[i2])//未被访问
{
visit[i2] = 1;//更改访问记录
num[deep] = number;//记录选择的数
dfs(deep + 1);//下一层
num[deep] = 0;//回溯
}
cout << "a";
}
}
return ;
}
int is_prime(int a)//素数判断
{
int i3,flag = 0;
for (i3 = 2;i3 <= a;i3 ++)
{
if (a % i3 == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
{
return flag;
}
}
int main()
{
int i4,i5,count = 0;
cin >> n >> k;
for (i4 = 1;i4 <= n;i4 ++);//输入可选数
{
cin >> all[i4];
}
dfs(1);//全排列
for (i5 = 1;i5 <= sizeof(result);i5 ++);//筛选素数结果
{
if(is_prime(result[i5]) == 0)
{
count ++;
}
}
cout << count;
return 0;
}