编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[]) {
int i,j;
float num;
printf("Please input:");
while (scanf("%f",&num) == 1) //将输入函数scanf写入whileh循环判断中,方便程序可以循环执行,因为当scanf函数读取到正确的数据时返回1,所以此语句在输入非数字时会跳出循环中断执行
{
if ((int)num !=num) //判断s输入是否为整数,将float类型的变量num强制转换为int类型,判断其是否相等
{
printf("error!\n");
printf("Please input valuable data:");
continue; //此时输入数字不为整数,利用continue重新跳回循环语句判断,再次输入数据
}
for (i = num; i > 0; i--) //将输入的值赋给变量ℹ️,ℹ️通过递减循环取出比num小的所有正整数
{
for (j = 2; j <= (int)sqrt((double)i); j++) // 将变量初始化为2,递增到√i,求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型
{
if (i%j == 0 ) //判断是否能整除
{
break; //能整除则ℹ️为非素数,剩下的j则不必再递增进行判断,直接跳出循环
}
}
if (i%j != 0) //若i能被j整除则说明是经过break语句直接跳出,此时ℹ️为非素数,不必打印;否则说明循环完成,此时ℹ️为素数
printf("%d ",i);
}
printf("\nplease input another data:");
}
printf("\n done\n");
return 0;
}