1013 数素数 (20 分)(C语言)

1013 数素数 (20 分)

令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

 

#include <stdio.h>
#include <math.h>
int issushu(int k){
	if(k==2){
		return 1;
	}
	for(int i=2;i<sqrt(k)+1;i++){
		if(k%i==0){
			return 0;
		}
	}
	return 1;
}                                       //判断素数的函数
int main(){
int i=0,j=0;
int m=0,n=0,a[10001],k=0;
	scanf("%d %d",&m,&n);
	for( i=2;j<10001;i++){
	
	if(issushu(i)){                //调用函数
		a[j++]=i;
	}
}
	for(i=m;i<=n;i++){

		printf("%d",a[i-1]);

		k++;

		if(k%10==0)

		printf("\n");

		else  if(i!=n)

		printf(" ");	

}
}

 

C语言,计算九位内的回文素数是一个复杂的任务,需要结合循环、条件判断以及对字性质的理解。首先,你需要编写一个函来检查一个是否既是回文又是素数。 1. 回文检查:可以将字从后往前和从前往后逐位比较,如果相等,则该是回文的。 2. 素数检查:对于一个大于1的自然,遍历到其平方根,看是否有除了1和它本身以外的因子,如果没有,则它是素数。 接下来,你需要在一个循环,生成并检查每个九位是否符合条件。由于范围较大(从10^8到10^9),你可能会选择优化算法,例如只考虑奇,因为偶不可能是素数(除了2)。以下是简化版的大致步骤: ```c #include <stdio.h> #include <stdbool.h> bool isPalindrome(int num) { int reversed = 0; while (num != 0) { int digit = num % 10; reversed = reversed * 10 + digit; num /= 10; } return num == reversed; } bool isPrime(int num) { if (num <= 1) return false; for (int i = 2; i * i <= num; i++) { if (num % i == 0) return false; } return true; } int countPalindromicPrimes(int lower, int upper) { int count = 0; for (int num = lower; num <= upper && num < 1e9; num += 2) { // 只检查奇 if (isPalindrome(num) && isPrime(num)) count++; } return count; } int main() { int start = 100000000; // 开始搜索九位 int end = 1000000000; // 结束于九位的最大值 int palindromeCount = countPalindromicPrimes(start, end); printf("九位内的回文素数有: %d\n", palindromeCount); return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值