勾股数 题目0001
题目描述:
如果三个正整数A、B、C ,A²+B²=C²则为勾股数
如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数,
则称其为勾股数元组。
请求出给定n~m范围内所有的勾股数元组
输入描述
起始范围
1 < n < 10000
n < m < 10000
输出描述
ABC保证A<B<C
输出格式A B C
多组勾股数元组,按照A B C升序的排序方式输出。
若给定范围内,找不到勾股数元组时,输出Na
。
示例一
-
输入
1 20
-
输出
3 4 5 5 12 13 8 15 17
示例二
-
输入
5 10
-
输出
Na
源码
//
// Created by HANWENKE on 2022/8/27.
//
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool prime(const int &x,const int &y){
if(x==1||y==1){
return false;
}
int mmin=min(x,y);
for(int i=2;i<=mmin;i++){
if(x%i==0&&y%i==0){
return false;
}
}
return true;
}
int main(){
int n,m;
cin>>n>>m;
vector<int>temp;//记录临时元素
vector<vector<int>>res;//记录最终结果
bool flag= true;
//三个元素互质--必定不能够相等
for(int a=n;a<m;a++){
for(int b=a+1;b<m;b++){
for(int c=b+1;c<m;c++){
if(prime(a,b)&& prime(c,b)&& prime(a,c)){
if(a*a+b*b==c*c){
temp={
a,b,c};
flag= false;