用C语言写个程序,输出50以内的所有勾股数组合~谢谢

2020-06-01

//以下代码已测试通过

#include

int main()
{
int i,j,k;

for ( i=1; i<50; i++ )
{
for ( j=i+1; j<50; j++ )
{
for ( k=j+1; k<50; k++ )
{
//判断是否能组成三角形
if ( i+j > k && k*k== i*i + j*j )
{
printf( "%d %d %d
", i, j, k);
}
}
}
}
return 0;
}

#include "stdio.h"
void main()
{
int i,sum=0;
for(i=0;i<=50;i++)
{
sum=sum+i;
i=i+1;
}
printf("%d",sum);
}

#include
#include
main()
{
int i,n;
for(i=2;i<=50;i++)
{
for(n=2;n<=(int)sqrt(i);n++) //for(n=2;n<=i;n++) i<=n条件结束判断
if(i%n==0) break;
f(n==(int)sqrt(i)+1) //其实这个条件判断是和上面的for并列的
printf("%d",i);
}
}区别一下两次循环。
你会发现你的做法明显效率更高。
给你举个例子来说明一下吧。
比如说16,我给你举的做法就得从2做到16,就是比较传统的做法。
但是你的只要从2做到4,明显高效了,为什么呢?
和2对应的是8
和3对应的是5多一点
和4对应的是4

和5对应的是3多一点
和6对应的是3不到一点
……
你有没有发现到后来做的其实已经和前面的重复了呢?
而这个重复的界限的就是开方后的4对吧


第二个问题
还是上面的例子吧
这里的这个条件其实是到最后的break或者说是到最后了没做成才做到这个条件的,只有加了1才会到后面一个数上去啊。
因为这个循环里做到了最后,所以要进入下一个数。
(这个是思路,一下子没明白也正常的)我当时也想了很久的

两个数互质,就是说两个数的没有公共因子,即最大公约数是1

程序如下:
#include

int GCD(int x,int y)//最大公约数函数,欧几里德算法
{
int a,b,c;
if(x>y)
{a=x,b=y;}
else
{a=y,b=x;}
while ((a%b)!=0)
{
c=a%b;
a=b;
b=c;
}
return b;
}

int main()
{
int m,n;
printf("please input two positive numbers:");
scanf("%d%d",&m,&n);
if(GCD(m,n)>1)
printf("两个数不是互质的。
");
else
printf("两个数是互质的。
");
}


输入示例:100 3
输出:两个数是互质的。

程序在DEV C++下调试通过,最大公约数计算使用的是欧几里德算法(数论基础知识),看过就明白了。

#include
#include
#include

#define MAX_NUMBER 500

/*
本程序默认求500以内的亲密数
可以输入参数,求亲密数的范围:
假定程序名为 qinmi.exe
qinmi.exe 300 ==> 即求300以内亲密数
*/

typedef struct _INODE{
int data;
struct _INODE * next;
}INODE;

int TailInsert (INODE * head, int n)
{
INODE * t;
INODE * p;

if (head == NULL)
{
return -1;
}

t = head;
while (t->next != NULL)
{
t = t->next;
}

p = (INODE *) malloc(sizeof(INODE));
if (p == NULL)
{
return -1;
}

t->next = p;
p->data = n;
p->next = NULL;

return 0;
}

INODE * QinMiShu(int n)
{
INODE * head = NULL;
int i;

if (n > 1)
{
head = (INODE *) malloc(sizeof(INODE));
head->data = n;
head->next = NULL;

TailInsert(head, 1);
}
else
{
return NULL;
}

for (i=2; i <= n/2; i++)
{
if (n%i == 0)
{
TailInsert(head, i);
}
}
return head;
}

int SumList(INODE * head)
{
INODE * t;
int sum = 0;

if (head == NULL)
{
return 0;
}
t = head->next;

while(t != NULL){
sum += t->data;
t = t->next;
}

return sum;
}


void FreeMem(INODE * head)
{
INODE * t;

while (head != NULL)
{
t = head;
head = head->next;
free((void *)t);
}
}

int main(int argc, char * argv[])
{
int i, x;
int max = MAX_NUMBER;
INODE * head = NULL;

if (argc > 1)
{
max = atoi(argv[1]);
}

printf("Qingmi number in range: %d:
", max);

for (i=1; i<= max; i++)
{
head = QinMiShu(i);
x = SumList(head);
FreeMem(head);

if (i == x)
{
printf("%d -- %d
", i, i);
}
else if (x <= max)
{
head = QinMiShu(x);
if (i == SumList(head))
{
printf("%d -- %d
", i, x);
}
FreeMem(head);
}
}
return 0;
}

编写完整程序:计算并输出50以内(含50)的所有偶数之和 用c语言_ : #include int main() { int i,sum=0; for(i=1;i sum+=i*(i+1); printf("%d",sum); return 0; }

用c语言求解 输出1_50以内的所有勾股数_ : #include <stdio.h> void main(){ int a,b,c; for(a=2;a<=48;a++) for(b=a+1;b<=49;b++) for(c=b+1;c<=50;c++) if(a*a+b*b==c*c) printf("%-4d%-4d%-4d\n",a,b,c); }

c语言输出一个结果是五十位的数怎么输?c语言输出一个结果是五十位 : 请采纳我的答案. 你的问题是逗号表达式问题. 例如: int a=3,4,5; printf(“%d\n”,a); 打印结果会是5. 原因: 逗号表达式的运算顺序是从左到右,也就是说a先等于3,在等于4,又等于5,也就是最终结果是5.

写一段c语言程序,列出50以内的所有互质数对._ : #include<stdio.h>#include<math.h> void main() { int n,i,k,t=0; int a[50]; for(i=2;i<=50;i++) { for(k=2;k<=sqrt(i);k++) { if(i%k==0) { break; } } if(k>sqrt(i)) { t++;a[t]=i; } } for(i=1;i<=t;i++) for(k=1;k<=t&&i!=k;k++) { if(a[i]/a[k]!=0) printf("%3d %3d",a[i],a[k]); printf("\n"); } }算法有些复杂不过是正确的,质因数没写,加一个函数就行.

求一个50行左右的简单些的C语言程序, : #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 3 typedef struct { char xm[20]; int xh; float cj; float pj; float yw; float sx; float jsj; } head; int sort (head x[],int a); int colect (head xx[],int b); int output (head xxx[],int c); int input (head ...

写一个50行左右的循环结构有输出结果的C语言程序._ : #include<stdio.h>#include<malloc.h>struct node{ int data; struct node *next;};struct node *p;struct node *p1;struct node *head=NULL;void main(){ int n,tj=0,ctrl=0; printf("输入一组整数,以0结尾:\n"); scanf("%d",&n); p=(struct node *)malloc...

用C语言写程序求输入的50个同学的成绩的最低分? : #include<stdio.h>main(){ int Score[50]; int MinScore; int i; for(i=0;i<50;i++) { printf("Please input %d-th score:",i+1); scanf("%d",&Score[i]); } MinScore=Score[0]; for(i=0;i<50;i++) { if(Score[i]<MinScore) { MinScore=Score[i]; } } printf("The min score is %d :",MinScore);}

c语言源程序,把50以内的奇数按每行5个输出_ : #include "stdio.h" main() { int n,i; for(i=1,n=1;n<50;n+=2,i++) {printf("%4d",n); if(i%5==0)printf("\n"); } } —————————————————————— 运行已经通过!!!!

求一个50行左右的C语言编程. : 打开vc++6.0,新建---工程选项卡里选择win32 Console Application 填上工程名,选择一下存放路径,确定,选择一个简单的工程,完成.然后把代码复制粘贴进去,就ok了// 奇数魔方.cpp : Defines the entry point for the console application.//#...

我想写个50行的简单C语言程序_ : C 语言里面,也有随机函数的,,,,,,,#include<stdio.h>#include<time.h>#include<stdlib.h>............. srand(time(NULL));...........index=(double)(rand()/(RAND_MAX+1))*4;........