输入
数字个数n
最小从4开始,输出n 个升序排列的数字
输出任意两个数之间质数个数的总和
3
4
6
12
out:
6
(4-6,6-12,4-12)
不知道哪里错了,求解:
#include <iostream>
#include<string>
#include<fstream>
#include<math.h>
using namespace std;
bool yes(int i)
{
int a=0;
for(a=2; a<=sqrt(i); a++)
{
if(i%a==0)
{
return false;
}
}
return true;
}
int xunzhao(int a,int b)
{
int counts=0;
for(int c=a; c<=b; c++)
{
if(yes(c))
{
counts++;
}
}
return counts;
}
int zhishu(int *arr,int num,int z)
{
int left=0;
int ri=0;
int sum=0;
for(int i=0; i<num-z;i=i+z)
{
left=arr[i];
ri=arr[i+z];
sum+=xunzhao(left,ri);
}
return sum;
}
int main()
{
int num;
cin>>num;
int arr[num+1];
for(int i=0; i<num; i++)
{
cin>>arr[i];
}
int he=0;
for(int a=1;a<num;a++)
{
he+=zhishu(arr,num,a);
}
cout<<he;
}
结果就是有问题。。求帮助看看
意思输入n个数,然后输出这n个数两两之间的质数个数的总和吗