驗證“哥德巴赫猜想”/水仙花數/給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形
阿新 • • 發佈:2019-02-06
迴圈-04. 驗證“哥德巴赫猜想”(20)
數學領域著名的“哥德巴赫猜想”的大致意思是:任何一個大於2的偶數總能表示為兩個素數之和。比如:24=5+19,其中5和19都是素數。本實驗的任務是設計一個程式,驗證20億以內的偶數都可以分解成兩個素數之和。
輸入格式:
輸入在一行中給出一個(2, 2 000 000 000]範圍內的偶數N。
輸出格式:
在一行中按照格式“N = p + q”輸出N的素數分解,其中p <= q均為素數。又因為這樣的分解不唯一(例如24還可以分解為7+17),要求必須輸出所有解中p最小的解。
輸入樣例:
24
輸出樣例:
24 = 5 + 19
#include <stdio.h> #include<math.h> long long isPrime(long long n){ long long i,sign=1; for(i=2;i<=sqrt(n);i++){ if(n%i==0){ sign=0; } } return sign; } int main(void) { long long N,p=2,q=2; scanf("%lld",&N); for(;p<=(N-p);p++){ if(isPrime(p)&&isPrime((N-p))){ printf("%lld = %lld + %lld",N,p,N-p); break; } } return 0; }
【描述】
水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。例 如:153 = 13 + 53 + 33。 本題要求編寫程式,計算所有N位水仙花數。
【輸入】
輸入在一行中給出一個正整數N(3<=N<=7)。
【輸出】
按遞增順序輸出所有N位水仙花數,每個數字佔一行。
【輸入示例】
3
【輸出示例】
153
370
371
407
#include<stdio.h> int powI(int n,int N){ int sum; for(sum=1;N>=1;N--){ sum=sum*n; } return sum; //忘記return sum了! } int main(){ int N,sum,i,n,SUM=0,a,b; scanf("%d",&N); // n=pow(10,N-1);不要用pow,在PAT裡測試,速度相當慢,還通不過測試。自己寫迴圈來算。 b=N; for(a=1;b>1;b--){ a*=10; } sum=a; n=a; while(n<a*10){ while(sum!=0){ i=sum%10; SUM=SUM+powI(i,N); sum=sum/10; } if(n==SUM) printf("%d\n",SUM); SUM=0; n++; sum=n; } return 0; }
【描述】
給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形。
【輸入】
輸入在一行中順序給出6個[-100, 100]範圍內的數字,即3個點的座標x1, y1, x2, y2, x3, y3。
【輸出】
若這3個點不能構成三角形,則在一行中輸出“Impossible”;若可以,則在一行中輸出該三角形的周長和麵積,格式為“L = 周長, A = 面積”,輸出到小數點後2位。
【輸入示例1】
4 5 6 9 7 8
【輸出示例1】
L = 10.13, A = 3.00
【輸入示例2】
4 6 8 12 12 18
【輸出示例】
Impossible
#include<stdio.h> #include<math.h> int main(){ double x1,y1,x2,y2,x3,y3,l1,l2,l3,p; scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3); if((x1-x2)/(y1-y2)!=(x2-x3)/(y2-y3)){ l1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)),l2=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)),l3=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); p=(l1+l2+l3)/2; printf("L = %.2f, A = %.2f",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))+//,後面有空格 sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3))+ sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)), sqrt(p*(p-l1)*(p-l2)*(p-l3))//海倫公式 ); } else printf("Impossible"); return 0; }