1. 程式人生 > >驗證“哥德巴赫猜想”/水仙花數/給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形

驗證“哥德巴赫猜想”/水仙花數/給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形



迴圈-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;
	}