1、从键盘输入一个整数,判断该数是否为素数什么是素数,素数(质数)是指在大于1的自然数中,除了1和它 本身以外不再有其他因数的自然数。
思路:直接暴力破解
具体实现
#include <stdio.h>
int main()
{
int n,i;
printf("请输入一个数:\n");
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i<n)
printf("%d不是素数\n",n);
else
printf("%d是素数\n",n);
return 0;
}
2、求解从2到20000的所有完数。所有的因数的和等于本身的数字称为完数
思路: 求出选取数值i的因子,即从1到i-1范围内能整除i的数,看某一个数j是否为i的因子,可利用语句if(i%j==0)进行判断,求某一个数的所有因子,需要在1到i-1范围内进行遍历,同样釆用循环实现。因此,本题从整体上看可利用两层循环来实现。外层循环控制该数的范围2〜n;内层循环j控制除数的范围为1〜i,通过i对j取余,是否等于0,找到该数的各个因子。 具体实现
#include<stdio.h>
int main()
{
int i, j, s, n; /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/
printf("请输入所选范围上限:");
scanf("%d", &n); /* n的值由键盘输入*/
for( i=2; i<=n; i++ )
{
s=0; /*保证每次循环时s的初值为0*/
for( j=1; j<i; j++ )
{
if(i%j == 0) /*判断j是否为i的因子*/
s += j;
}
if(s == i) /*判断因子这和是否和原数相等*/
printf("It's a perfect number:%d\n", i);
}
return 0;
}