固定周长三边都为质数的所有三角形

这次写一个C++初学者遇到的一个编程题,即是求固定周长三边都为质数的所有三角形,并输出三边的各个长度.

算法思想:

(1)求出2~周长范围内的所有质数;

(2)把这些质数放在动态数组里存储;

(3)让这些质数自由组合,选出满足周长条件及成立三角形的条件;

(4)去重,利用三重上下关联for循环筛选出各不相同情况;

C++源代码如下:

#include<iostream>
using namespace std;
int count=0;
int n=10000;
int *R_Results=new int[n];
int *R=new int[n];
 
int j=1;
int prime_number(int a)
{
R_Results[0]=1;
for(int i=2;i<a;)
{
     
if(a%i==0)
{
return 0; 
}
else
{
i++;
}
}
R_Results[j]=a;
    j++;
  for (int i=0;i<j;i++)
  {
  return R_Results[i];
  }


}


int Result(int a)
{
for(int i=1;i<=a;i++)
{
prime_number(i);
}
cout<<"三角形都为质数的三边长组合如下:"<<"\n"; 
for(int r=2;r<j;r++)
{
R[r]=R_Results[r];
}
for(int k=2;k<j;k++)
{
  for(int s=k;s<j;s++)
{
for (int i=s;i<j;i++)
 {
if (((R[i]+R[s]+R[k])==a)&&((R[i]+R[s])>R[k])&&((R[i]+R[k])>R[s])&&((R[k]+R[s])>R[i]))
{
//solution[count][3]={R[i],R[s],R[k]};
count++;
cout<<R[i]<<","<<R[s]<<","<<R[k]<<"\n";
}
 }
}
}
cout<<"三角形都为质数的三边长组合个数为:"<<count<<"\n";

}


int main()
{
int a=0;
cout<<"请输入周长值:" ;
cin>>a; 
Result(a);
return 0;
}

运行结果如下:

固定周长三边都为质数的所有三角形