
已解决问题
谷歌用户在2019.02.11提交了关于“奥尼尔输入一个整数N,输出1-N之间的所有的素数 c++ 用while语句 急急急”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-26T14:04:50。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !
详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !
抽空编了一下,通过调试编译,用10、100为例,结果正确。
源程序如下,仅供参考:
#include<stdio.h>
#include<math.h>
intmain()
{
intn_input;//输入的n
inti_sqrt;
inti,j;//循环变量
intis_prime;//素数判断变量
printf("PleaseINPUTaPositiveNumber:");
scanf("%d",&n_input);
printf("Between1and%d,thePrimeNumbersare:\n",n_input);
i=2;//最小素数为2,从2开始循环
while(i<=n_input)//从2到n循环验
{
j=2;
i_sqrt=(int)sqrt((double)i);//判断是否素数,从2到√i(根号i)即可,不用到n
is_prime=1;//是否素数赋初值
while(j<=i_sqrt)//从2到√i循环,判断i是否能被j整除
{
if(i%j==0)//i能能被j整除,不是素数
{
is_prime=0;//不是素数,素数判断变量置0
bre**;//已经验不是素数,后面的不用再验,直接跳出循环
}
j++;
}
if(is_prime==1)//如果是素数,打印输出
printf("%d\t",i);//输出控制符使用转义字符'\t'(制表符),保持输出美观
i++;
}
return0;
}
当n=10(4个素数)时,输出结果:
当n=100时(25个素数),输出结果: