|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个题目
- 请写一段程序计算两个数之间的素数。
- 输入格式:
- 为两个正整数a和b,(1<a,b<1000)。
- 输出格式:
- 当a小于b时,计算开区间(a,b)中的所有素数,并按升序输出,当a>=b时,或该区间没有素数则输出error。
- 注意:输出的素数之间用一个空格分隔,最后一个素数后面没有空格。
- 输入样例:
- 10 20
- 输出样例:
- 11 13 17 19
复制代码
怎么做到让最后一个素数后面没有空格呀!!
我的代码
- #include <stdio.h>
- int main()
- {
- int a,b,i,m,flag1=1,flag2=1; scanf("%d %d",&a,&b);
- if(a < b)
- {
- for(i = a+1;i < b;i++)
- {
- flag1 = 1;//重置
-
- for(m = 2;m <= i/2;m++)
- {
- if(i%m == 0)//判断i是否为素数.
- {
- flag1 = 0;//要在循环中保持flag1的合理性
- break;
- }
- }
-
- if(flag1)//结果输出,若i是素数,则输出.
- {
- printf("%-3d",i); flag2 = 0;
- }
- }
-
- flag2 == 1 ? printf("error") : flag2 = 1;//条件判断用双==
- }
- else
- {
- printf("error");
- }
- return 0;
- }
复制代码
本帖最后由 AFUL 于 2023-10-17 20:56 编辑
- #include <math.h>
- #include <stdio.h>
- bool is_prime_num(int &a){
- int b = sqrt(a);
- for(int i = 2; i <= b; i++)
- if(a % i == 0)
- return false;
- return true;
- }
- int main() {
- int m, n, i;
- bool flag = false;
- scanf("%d %d", &n, &m);
- if(n < 0) n = 0;
- if (n < 2 && m > 2) {
- printf("%d", 2);
- flag = true;
- n = 2;
- }
- for(i = n+1; i < m; i+=2){
- if(is_prime_num(i)) {
- flag? printf(" %d", i) : printf("%d", i);
- flag = true;
- }
- }
- if (!flag)
- printf("error");
- return 0;
- }
复制代码
|
|