第四周《C语言及程序设计》实践项目39 问题求解——求素数

Posted weixin_35827498

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周《C语言及程序设计》实践项目39 问题求解——求素数相关的知识,希望对你有一定的参考价值。

<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">【项目1-完数】</span><pre name="code" class="cpp">/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2 - n=a!+b!+c!】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
 */ 
#include<stdio.h>
int main()

	int n,a,b,c,m,D,i;
	for(n=100;n<1000;++n)
	
		a=n/100;
		b=(n/10)%10;
		c=n%10;
		D=0;
		for(m=1,i=1;m<=a;++m)
		i*=m;D+=i;
		for(m=1,i=1;m<=b;++m)
	    i*=m;D+=i;
		for(m=1,i=1;m<=c;++m)
		i*=m;D+=i;
		if(n==D)
		printf("%d",n);
		
	
	return 0;


 运行结果


【项目2 - n=a!+b!+c!】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2 - n=a!+b!+c!】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
 */ 
#include<stdio.h>
int main()

	int n,a,b,c,m,D,i;
	for(n=100;n<1000;++n)
	
		a=n/100;
		b=(n/10)%10;
		c=n%10;
		D=0;
		for(m=1,i=1;m<=a;++m)
		i*=m;D+=i;
		for(m=1,i=1;m<=b;++m)
	    i*=m;D+=i;
		for(m=1,i=1;m<=c;++m)
		i*=m;D+=i;
		if(n==D)
		printf("%d",n);
		
	
	return 0;

运行结果


心得体会

核心算法就是求n!,利用for循环,设两个变量


【项目3-反序数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目3-反序数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">(2)求1000000以内的正整数n,要求9n是n的反序数。</span>
 */ 
#include<stdio.h>
int main()

	int i;
	for(i=1;i<=1000000;++i)
	
		int n=0,a;
		a=i;
		while(a>0)
		
			n=n*10+a%10;
			a=a/10;
		
		if(n==9*i)
		printf("%d\\n",i);
	
运行结果


【项目3-反序数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目3-反序数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(1)输入一个正整数,输出它的反序数(反序数,即将其所有位的数字反过来。例如,123是321的反序数)
 */ 
#include<stdio.h>
int main()

	int a,b,n;
	scanf("%d",&n);
	a=n;
	b=0;
	while(a>0)
	
		b=b*10+a%10;//%10相当于取n的个数 
		a=a/10;//相当于筛选掉个位数 
	
	printf("%d的反序数为%d\\n",n,b);
	
	return 0; 
  

运行结果



心得体会

核心的就是数的调换顺序

【项目4-回文数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目4-回文数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(1)输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。
 */ 
#include<stdio.h>
int main()

	int a,n,sum;
	scanf("%d",&n);
	a=n;
	sum=0;
	while(a>0)
	
		sum=sum*10+a%10;
		a=a/10;
	
	if(sum==n)
	printf("Yes!!!\\n");
	else
	printf("No!!!\\n");
	
	return 0;
  

运行结果



【项目4-回文数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目4-回文数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(2)输出10000以内的所有回文数。
 */ 
#include<stdio.h>
int main()

	int a,sum,i;	
	for(i=1;i<=10000;++i)
	
	a=i;
	sum=0;
	while(a>0)
	
		sum=sum*10+a%10;
		a=a/10;
	
	if(sum==i)
	printf("%d\\n",i);
	
	
	return 0;
  

运行结果



【项目5-阿姆斯特朗数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目5-阿姆斯特朗数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
 * 如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。
 */ 
#include<stdio.h>
int main()

   int a,sum,i,b;
   for(i=1;i<=1000;++i)
   
   	sum=0;
   	a=i;
   	while(a>0)
   	
   		b=a%10;
   		sum+=b*b*b;
   		a=a/10;
	
	if(sum==i)
	printf("%d\\n",sum);
   
运行结果


【项目6-回文日】

。。。就不传了


以上是关于第四周《C语言及程序设计》实践项目39 问题求解——求素数的主要内容,如果未能解决你的问题,请参考以下文章

第四周《C语言及程序设计》实践项目39 动态存储管理与动态数组的实现

第四周《C语言及程序设计》实践项目39 动态存储管理与动态数组的实现

第四周《C语言及程序设计》实践项目5 认识递归

第四周《C语言及程序设计》实践项目5 认识递归

第四周《C语言及程序设计》实践项目2 模块化程序设计及C语言中的函数

第四周《C语言及程序设计》实践项目11 体验结构体