1、从键盘输入一个整数判断是否为素数
什么是素数:
素数一般指质数,质数是指在大于一的自然数中,除了1和它本身以外不再有其它因数的自然数
思路:
在设计算法时利用C语言的相关内容进行编写,首先可以达到从键盘输入一个数字N,通过算法来判断是否为素数,算法中引入字符i(2~n-1),如果能被i中的任何一个数整除,则表明n不为素数,循环结束,否则输出n为素数。
具体实现:
#
include <stdio.h>
int main ()
{
int i,n;
printf("please input a number:\n");
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0) break;//上述循环终止就可以判断n是否为素数
if(i<n){
//printf("%d",n);//说明有一个数能整除n不符合素数的要求
printf(" %d 不是素数\n ",n);
}
else{
printf("%d",n);//说明求得的n符合素数的基本要求
printf("%d 是素数\n",n);
}
return 0;
}
做题遇到的问题:
很久没有做算法题;连基本的运算思想都没有记住,做题时忘记了scanf后面需要加取值符号“&”
2、求解从2~20000的所有完数。
什么是完数:
他的所有真因子的和正好等于其本身,如果一个数恰好等于他的因子之和,则称该数为完数。
思路:
利用C语言进行编写,首先可以先设计好排版,对于完数的定义可以写出第一个函数用来判断是否为完数,也就是对num与i进行取余,若有效结果之和恰好等于num,即可求得完数。
实现:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int getNum;
printf("请输入一个范围num:");
scanf("%d",&getNum);
printf("0~20000的完数是:");
getPerfectNum(getNum);
return 0;
}
void isPerfectNum (int num)
{
int sum = 0;
int i;
for(i=1;i<num;i++)//穷举num的每一个因数
{
if(num % i==0)
sum += i;
}
if(sum == num)//num与因数和相等,则为完数
{
printf("%d\n",num);
}
}
void getPerfectNum(int getNum)
{
int num;
for(num=2;num<=getNum;num++)
{
isPerfectNum(num);
}
}