求素数
求素数表中1到1000之间的所有素数。
问题分析与算法设计
素数就是仅能被1和它自身整除的整数。判断一个整数n是否为素数就是要判断整数n能否被除1和自身之外的任意整数整除,若都不能整除,则n为素数。
程序设计时可以从2开始,到该整数n的1/2为止,用i依次去除需要判断的整数,只要存在可以整除该数的情况 ,即可确 定要判断的整数不是素数否则是素数。
# include <stdio. h>
main()
{int n1, nm, i, j, flag, count=0;
do{
printf("Input START and END=?");
scanf (" %d%d", &n1, &nm);
}
while (! (n1>0 && n1<nm));
printf
("... PRIME TABLE(%d - d%)...\n",n1,nm);
if (n1==1|| n1==2)
{
printf(" %4d ", 2);
n1 =3; count++;
}
for (i=n1; i<=nm; i++)
{
if (! (i%2)) continue;
for (flag=1,j=3; flag&&j<i/2; j+=2)
if (flag) printf (++count%15 ? "%4d : "%4d\n", i);
}
}
最大公约数和最小公倍数
手工方式求两个正整数的最大公约数的方法是辗转相除法,在程序中可以模拟这种方式。
#include<stdio.h>
main()
{
int a,b, num1, num2 ,temp;
printf(" Input a &b:");
scanf(" %d%d" , &num1, &num2);
if (num1>num2)
{
temp= num1 ;
num1= = num2;
num2= temp;
}
a= num1;
b= num2;
while ( b! =0)
{
temp=a%b;
a=b;
b=temp;
}
printf(" The GCD of %d and %d is: %d\n", num1,num2,a);
printf(" The LCM of them is: %d\n" , num1 * num2/a);
}