精华内容
下载资源
问答
  • 勾股数c语言
    2021-05-24 03:36:07

    专题6 程序设计综合举例

    6.1 求π的近似值

    6.2 求定积分的近似值

    6.3 求一元方程的根

    6.4 求勾股数

    6.5 求梅森素数

    6.6 程序调试

    6.4 求勾股数

     求勾股数的基本思想

     程序实现

     求倒勾股数

    1 求勾股数的基本思想

    2 2 2

     所谓勾股数,是指能够构成直角三角形三条边的三个正整数a,b,c,即满足a +b =c 。

     求100以内的所有勾股数。

    2 程序实现

    #include

    int main()

    {

    int a,b,c,n=0;

    for(a=1;a<=100;a++)

    for(b=a+1;b<=100;b++)

    for(c=b+1;c<=100;c++)

    if (a*a+b*b==c*c)

    {

    printf ("%4d%4d%4d\t",a,b,c);

    n++;

    if (n%4==0) printf ("\n");

    }

    printf ("n=%d\n",n);

    return 0;

    }

    2 程序实现

    #include

    #include

    int main()

    {

    int a,b,c,n=0;

    for(a=1;a<=100;a++)

    for(b=a+1;b<=100;b++)

    {

    c=sqrt(a*a+b*b);

    if (a*a+b*b==c*c && c<=100)

    {

    printf ("%4d%4d%4d\t",a,b,c);

    n++;

    if (n%4==0) printf ("\n");

    }

    }

    printf ("n=%d\n",n);

    return 0;

    }

    3 求倒勾股数

    倒勾股数是满足下列公式的3个正整数a,b,c,求100以内的全部倒勾股数。

    1 1 1

    2 +2 = 2 , > >  1/(a*a)+1/(b*b)==1/(c*c)

     1.0/(a*a)+1.0/(b*b)==1.0/(c*c)

    #include

    int main()  c*c*(a*a+b*b)==a*a*b*b

    {

    int a,b,c;

    for(c=1;c<=98;c++)

    for(b=c+1;b<=99;b++)

    for(a=b+1;a<=100;a++)

    if (c*c*(a*a+b*b)==a*a*b*b)

    printf ("%4d%4d%4d\n",a,b,c);

    return 0;

    }

    关于实数的比较问题。

    #include

    改为:fabs(x-1.0)>=1e-5

    int main()

    {

    double x;

    for(x=0.1;x!=1;x+=0.1)

    printf ("%lf\n",x);

    更多相关内容
  • C语言勾股数

    2022-04-19 15:38:54
    } //勾股数 求100以内的所有勾股数。 void pythagoreanNumber() { int i = 1, j = 1, k = 1; for (i=1; i ;i++) { for (j=1; j ;j++) { for (k=1; k ;k++) { if ((i ) && (i + j>k) && (k - j ) && (i*i...
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    void check_count();
    void combineNum(int x, int y, int z,int num);
    void printDiamond(int x, int y);
    void purchaseChicken();
    float calculatePi();
    void primeJudge();
    void perfectJudge();
    void intimacyNumber();
    void automorphic();
    void narcissisticNumber();
    void palindromeNumber();
    void pythagoreanNumber();
    int main() {
    	pythagoreanNumber();
    	return 0;
    }
    
    //勾股数 求100以内的所有勾股数。
    void pythagoreanNumber() {
    	int i = 1, j = 1, k = 1;
    	for (i=1; i <= 100;i++) {
    		for (j=1; j <= 100;j++) {
    			for (k=1; k <= 100;k++) {
    				if ((i < j < k) && (i + j>k) && (k - j < i) && (i*i + j*j == k*k)) {
    					printf("%d,%d,%d\n", i, j, k);
    				}
    					
    			}
    		}
    	}
    
    }
    
    
    展开全文
  • C语言 寻求勾股数

    千次阅读 2021-01-02 17:14:37
    Description 满足 的正整数x,y和z称为一组勾股数(pythagorean triple),又称为毕达哥拉斯三元数组。...如果指定范围内有勾股数,则按照x从小到大的顺序输出每组勾股数,每组勾股数要求x<y<z。勾股

    Description
    满足
    在这里插入图片描述的正整数x,y和z称为一组勾股数(pythagorean triple),又称为毕达哥拉斯三元数组。现在要求你编程求指定范围内的勾股数。

    Input
    输入若干对数a和b,每对数占一行。0<=a,b<=10000,分别为指定范围的最小值和最大值。

    Output
    输出为多行,与上述输入一一对应。

    每行输出首先输出用例编号“case i",其中i为行号,从1开始计数。

    如果指定范围内有勾股数,则按照x从小到大的顺序输出每组勾股数,每组勾股数要求x<y<z。勾股数的组与组之间用一个分号(";")隔开。

    如果指定范围内没有勾股数,则输出”No pythagorean triple“。

    Sample Input
    1 10
    6 9

    Sample Output
    case 1:3,4,5;6,8,10
    case 2:No pythagorean triple

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a,b,x,y,z,h=1,k=0,n=0;
        
    	while(scanf("%d%d",&a,&b)!=EOF)
        {
        	printf("case %d:",h);
    		h++;
    		
    		for(x=a;x<=b;x++)
        	{
    			for(y=a;y<=b;y++)
        		{
        			z=sqrt(x*x+y*y);
        	
    				if(x*x+y*y==z*z && x<y && y<z && x<z && z<=b)
    					{
    	    				n++;
    						if(k==0)
    						{
    							printf("%d,%d,%d",x,y,z);
    							k++;
    						}
    						else
    						{
    							printf(";%d,%d,%d",x,y,z);
    						}
    					}
    			}
    		}
    		if(n!=0) printf("\n");
    		
    		if(n==0) printf("No pythagorean triple\n");
    		
    		n=0;k=0;
    	}
    }
    

    用三个for循环可能会超时,所以这里只用了两个。

    展开全文
  • 最小的勾股数是3,4,5(用C语言实现)要求程序简洁,执行效率高!17 个解决方案#1踩疑似作业贴#3#include#includeintmain(){inta=0,b=0,c=0;intdata[];scanf("a,b,c",&a,&b,&c);//printf("%d",a);i...

    打印出100内的所有的勾股数。勾股数就是满足X平方+Y平方=Z平方  的数。 最小的勾股数是3 ,4, 5(用C语言实现)

    要求程序简洁,执行效率高!

    17 个解决方案

    #1

    疑似作业贴

    #3

    #include

    #include

    int main()

    {

    int a=0,b=0,c=0;

    int data[];

    scanf("a,b,c",&a,&b,&c);

    //printf("%d",a);

    if(a>0)

    {

    while(a*b*c>0)

    {

    if((a*a+b*b==c*c)||(c*c+b*b==a*a)||(a*a+c*c==b*b)) //

    {

    printf("a=%d,b=%d,c=%d",a,b,c);

    printf("data right");

    }

    else

    printf("data error");

    }

    }

    else

    printf("data error!");

    system("pause");

    return 0;

    }

    我试着让用户输入三个数,然后判断它们是不是勾股数,但是不知道用什么存scanf 接到的输入值比较好操作、及效率高。

    #4

    引用楼主 t_bug 的回复:

    打印出100内的所有的勾股数。勾股数就是满足X平方+Y平方=Z平方  的数。 最小的勾股数是3 ,4, 5(用C语言实现)

    要求程序简洁,执行效率高!抛砖引玉贴!哈哈

    #5

    哈哈...收到不错,踩下

    #6

    回溯的算法实现啊 这个就是比较好的了

    #7

    1 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。

    用回溯算法解决问题的一般步骤为:

    一、定义一个解空间,它包含问题的解。

    二、利用适于搜索的方法组织解空间。

    三、利用深度优先法搜索解空间。

    四、利用限界函数避免移动到不可能产生解的子空间。

    问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。

    回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题.

    #8

    回溯思想分析

    从1到X这X个数字中选出N个,排成一列,相邻两数不能相同,求所有可能的排法。每个数可以选用零次、一次或多次。例如,当N=3、X=3时,排法有12种:121、123、131、132、212、213、231、232、312、313、321、323。

    分析:以N=3,X=3为例,这个问题的每个解可分为三个部分:第一位,第二位,第三位。先写第一位,第一位可选1、2或3,根据从小到大的顺序,我们选1;那么,为了保证相邻两数不同,第二位就只能选2或3了,我们选2;最后,第三位可以选1或3,我们选1;这样就得到了第一个解"121"。然后,将第三位变为3,就得到了第二个解"123"。此时,第三位已经不能再取其他值了,于是返回第二位,看第二位还能变为什么值。第二位可以变为3,于是可以在"13"的基础上再给第三位赋予不同的值1和2,得到第三个解"131"和"132"。此时第二位也已经不能再取其他值了,于是返回第一位,将它变为下一个可取的值2,然后按顺序变换第二位和第三位,得到"212"、"213"、"231""232"。这样,直到第一位已经取过了所有可能的值,并且将每种情况下的第二位和第三位都按上述思路取过一遍,此时就已经得到了该问题的全部解。

    #9

    程序依据

    #include 

    using namespace std;

    int main()

    {

    for(int i = 1; i 

    {

    for(int j = i+1; i*i+j*j<100; j++)

    {

    //这里的判断互质没有扩展性,写死的

    if((i>1&&j%i==0)||(i%2==0&&j%2==0)||(i%2!=0&&j%2!=0))

    {

    continue;

    }

    else

    {

    cout <

    for(int k = 2; k*(i*i+j*j) 

    {

    cout <

    }

    }

    }

    }

    return 0;

    }

    #10

    给你一个算法,还算比较效率

    #include   

    #include 

    #include 

    main()

    {

    int t,flag;

    long a,b,c;

    t=1;

    flag=0;

    long  nBegin = ::GetTickCount();   //计算耗时

    for(c=1;c<=100;c++)

    {

    flag=0;

    for(a=1;a

    {

    if(flag)break;

    for(b=c-a;bc所以b从c-a开始查找*/

    {

    if(c*c==a*a+b*b)

    {

    printf( "%2d: a=%3ld; b=%3ld ;c=%3ld\n",t,a,b,c);

    t++;

    flag=1; /*因为每条不同的C只有一组勾股数*/

    /*所以只要找到一组就可以去找下一个C了*/

    break;

    }

    }

    }

    }

    printf("time used: %ld ms\n",::GetTickCount()-nBegin);

    getch();

    }

    #11

    这事数学问题和编程没关,建议看数论去

    ptintf(“

    3  4  5

    6  8  10

    9  12 15

    12 16 20

    15 20 25

    18 24 30

    21 28 35

    24 32 40

    27 36 45

    30 40 50

    33 44 55

    36 48 60

    39 52 65

    42 56 70

    45 60 75

    48 64 80

    51 68 85

    54 72 90

    57 76 95

    60 80 100 此为一类

    5  12 13

    10 24 26

    15 36 39

    20 48 52

    25 60 65

    30 72 78

    35 84 91 此为一类

    ”);。。。。

    #12

    有一种数组(a,b,c),满足条件: a*a+b*b=c*c和b=a+1。

    求证:

    (a,b,c)下一个满足条件的组合是

    ((2*(a+b+c) - b),(2*(a+b+c) - a),(2*(a+b+c) +c))

    如:初始条件(0,1,1)那么下一个是(3,4,5)

    一个次优算法?

    #13

    打击作业题

    #14

    引用 13 楼 dtxn2009 的回复:

    打击作业题

    这个大可不必,楼主第二楼已经自贴答案了^_^

    #15

    既然已经有答案了,就不局限在C语言了,我提供一个查字典的思路,空间换时间,只要两次循环。

    #include 

    #include 

    #include 

    #include 

    void init_database(std::vector& v, std::map& m, int max)

    {//默认为从1开始的连续整数

    v.assign(max*max+1, false);

    for(int i=1; i

    v[i*i] = true;

    m[i*i] = i;

    }

    }

    int main()

    {

    using namespace std;

    vector v;     //一个vector的特化版,100*100个数的存储容量大概在1KB左右

    map m;    //建一个平方数对应方根的表,免得计算开根费时,容量为100

    const int MAX = 100;

    init_database(v, m, MAX);

    int count=1;

    for(int i=1; i

    for(int j=i+1; j+i

    if(v[i] && v[j] && v[i+j])

    cout <

    <

    <

    }

    }

    return 0;

    }

    #16

    谢谢大家了!让我学到了很多

    #17

    考虑了一个实现,效率方面应该足够快速,因为只有两轮循环,且在循环中没有用到sqrt运算

    int gougu(int max)

    {

    int count = 0;

    for(int a=max/sqrt(2.0); a >= 3; a--)

    {

    int power = a * a;

    for(int t=2*a/3; t>=1; t--)

    {

    int k = power / t;

    if( k * t != power ) continue;

    int b2 = k - t;

    int c2 = k + t;

    if( b2 & 01 == 1) continue;

    int b = b2 >> 1;

    int c = c2 >> 1;

    // c > b > a的限制

    if( b <=0 ) continue;

    if( c > max ) continue;

    if( a > b ) continue;

    count++;

    printf("%d, %d, %d\r\n", c, b, a);

    }

    }

    return count;

    }

    展开全文
  • C语言勾股数(详解版)问题描述求100以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。问题分析根据“勾股数”定义,所求三角形三边应满足条件 a2 + b2 = c2。可以在所求范围内...
  • 问题描述求150以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。问题分析根据“勾股数”定义,所求三角形三边应满足条件 a2 + b2 = c2。可以在所求范围内利用穷举法找出满足条件...
  • C语言勾股数

    2021-10-09 12:12:21
    勾股数是指满足a2+b2=c2的正整数,比如最有名的“勾三股四弦五”。 现在给你两个正整数,请问是否存在另外一个正整数,使其成为“勾股数”? 输入 第一行是一个整数K,表示样例的个数。 以后每行一个样例,为两个...
  • 50以内勾股数有哪些

    2021-05-26 02:59:29
    勾股数,又名毕氏三元数。勾股数就是可以构成一个直角三角形三边的一组正整数。接下来给大家分享50以内勾股数。50以内的勾股数3 4 55 12 136 8 109 12 1510 24 2512 16 2015 20 2518 24 3021 28 3524 32 4027 36 ...
  • 满意答案ktjw73872014.12.11采纳率:54%等级:10已帮助:1016人#include"stdio.h"#include"math.h"voidpythagoreantriple(intmin,intmax,intn)//求范围内的勾股数{inti,j,k=0;printf("case%d:",n);for(i=min;i{for(j...
  • C语言勾股数.docx

    2020-01-08 07:38:20
    C语言勾股数 问题描述 求100以内的所有勾股数 所谓勾股数是指能够构成直角三角形三条边的三个正整数abc 问题分析 根据勾股数定义所求三角形三边应满足条件 a2?+ b2?= c2可以在所求范围内利用穷举法找出满足条件的...
  • 题目:求出1000以内的勾股数

    千次阅读 2020-05-14 18:27:25
    题目:求出1000以内的勾股数 勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形,输出所有a + b + c < = 1000的勾股数,a小的先输出;a相同的,b小的先输出。 C 代码 #...
  • 数学定理 勾股数-C语言实现的视频-融智技术学院
  • C语言试题六十四之请编写函数fun:求勾股数

    千次阅读 多人点赞 2021-08-21 18:11:08
    请编写函数fun,其功能时:求100以内的所有勾股数。 所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。 根据“勾股数”定义,所求三角形三边应满足条件:a的平方数+ b的平方数= c的平方数 ...
  • 求倒立勾股数

    2017-02-26 11:35:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • C语言 · 勾股数

    2017-02-23 10:24:00
    算法提高 勾股数 时间限制:1.0s 内存限制:256.0MB   问题描述  勾股数是一组三个自然数,a &lt; b &lt; c,以这三个数为三角形的三条边能够形成一个直角三角形 输出所有a + b + c &lt;= 1000的...
  • C语言每日一练——第78天:求勾股数

    千次阅读 多人点赞 2022-01-24 15:59:25
    C语言每日一练 2022年1月24日——分析:“勾三,股四,弦五”。古人把较短的直角边称为勾,较长直角边称为股,而斜边则为弦。 满足勾股定理,说明三角形为直角三角形,所以a,b,c肯定不相等(等边直角三角形虽然...
  • 我们则称x , y , z为一组倒立勾股数。你的任务是写一段程序计算出在某个范围内共有多少组倒立勾股数。 输入格式: 只有一行,为两个用空格分隔的正整数,依次为m,n(0<m<n<=1000)。 输出格式: 只有一个...
  • C++勾股数公式讲解

    2021-05-21 17:32:24
    C++勾股数公式讲解C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。以下是小编为大家搜索整理的C++勾股数公式讲解, 希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生...
  • #勾股数##需求分析该项目需求是要判断一个数是否满足勾股数的各个条件,并输出判断结果。勾股数:勾股数就是可以构成一个直角三角形三边的一组正整数,满足勾股定理:直角三角形两条直角边a、b的平方和等于斜边c的...
  • C语言勾股数问题描述求100以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。问题分析根据“勾股数”定义,所求三角形三边应满足条件 a2?+ b2?= c2。可以在所求范围内利用穷举法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 509
精华内容 203
关键字:

勾股数c语言

友情链接: mandel3.zip