暴力算法以及杂题

问题一:用 0,1,2,3 … 7这8个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。
提示:以0开始的数字是非法数字。

#include 
#include 
int main(){
	int a1,a2,a3,a4,a5,a6,a7,a8;
	int s,z;
	int j,n,sum=0;
	for(a1=1;a1<8;a1++){
		for(a2=0;a2<8;a2++){
			for(a3=0;a3<8;a3++){
				for(a4=0;a4<8;a4++){
					for(a5=0;a5<8;a5++){
						for(a6=0;a6<8;a6++){
							for(a7=0;a7<8;a7++){
								for(a8=0;a8<8;a8++){
									if(((a1!=a2)&&(a1!=a3)&&(a1!=a4)&&(a1!=a5)&&(a1!=a6)&&(a1!=a7)&&(a1!=a8))
									&&((a2!=a3)&&(a2!=a4)&&(a2!=a5)&&(a2!=a6)&&(a2!=a7)&&(a2!=a8))
									&&((a3!=a4)&&(a3!=a5)&&(a3!=a6)&&(a3!=a7)&&(a3!=a8))
									&&((a4!=a5)&&(a4!=a6)&&(a4!=a7)&&(a4!=a8))
									&&((a5!=a6)&&(a5!=a7)&&(a5!=a8))
									&&((a6!=a7)&&(a6!=a8))
									&&(a7!=a8)){
										s=a1*10000000+a2*1000000+a3*100000+a4*10000+a5*1000+a6*100+a7*10+a8;
										for(j=2;j<s;j++){
											if(s%j==0)	break; 
										}
										if(j==s){
											sum++;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}	
	printf("总数为%d",sum);
	return 0;
} 									

运行结果是:2668

问题二:年龄问题
今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”。
花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”。
请你计算:蒜头君和花椰妹年龄一共有多少种可能情况?
提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内。
实验代码:

#include 
#include 
int main(){
	int sum=0;
 	int m,n;
 	for(n=10;n<100;n++){
 		for(m=10;m<100;m++){
 			if(((((n/10)+(n%10))*2)==m)&&((((m/10)+(m%10))*3)==n)){
 				sum++;
			 }
		 }
}
	 printf("%d",sum);
}

暴力算法以及杂题_第1张图片
问题三:拉灯问题;
蒜头君今天回到了老家的大宅院,老家的灯还是那中拉线的灯(拉一次为亮,再拉一次就灭),蒜头君觉得无聊。把 10001000 盏灯 33 的倍数拉了一次,55 的倍数拉了一次,7的倍数拉了一次(灯得的编号从 1-10001−1000,灯的初始状态都是亮的)。这个时候蒜头君在想还剩下几盏灯还在亮着?
实验代码:

#include 
#include 
int main(){
 	int a[1000]={0};   //数组中0代表灯亮着,1代表灯暗着; 
 	int i,j,sum=0;
	 for(j=1;j<=1000;j++){
	 	if((j%5==0)&&(j%3==0)&&(j%7==0)){
	 		a[j-1]=1;
		 }
		 if((j%5==0)&&(j%3==0)&&(j%7!=0)){
		 	a[j-1]=0;
		 }
		  if((j%5!=0)&&(j%3==0)&&(j%7==0)){
		 	a[j-1]=0;
		 }
		 if((j%5!=0)&&(j%3==0)&&(j%7!=0)){
		 	a[j-1]=1;
		 }
		 if((j%5==0)&&(j%3!=0)&&(j%7==0)){
	 		a[j-1]=0;
		 }
		 if((j%5==0)&&(j%3!=0)&&(j%7!=0)){
		 	a[j-1]=1;
		 }
		  if((j%5!=0)&&(j%3!=0)&&(j%7==0)){
		 	a[j-1]=1;
		 }
		 if((j%5!=0)&&(j%3!=0)&&(j%7!=0)){
		 	a[j-1]=0;
		 }
	 }
	 for(i=0;i<1000;i++){
	 	if(a[i]==0){
	 		sum++;
		 }
	 } 
	 printf("%d",sum);
}

你可能感兴趣的:(C编程练习)