Problem B 1076 素数

素数2021年下学期《C语言程序设计》作业4-循环结构2

Description

对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。所以我们可以通过测试来确定n是否为素数。现在给出n,要你求是否为素数,是输出Yes,否则输出No

每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。判断n是否为素数

每行输出一个用例的结果,如果是输出"Yes",否则输出“No”

这里有两个坑人的地方。

第一、头文件。math.h比cmath运行起来要快,同理,stdio.h比cstdio运行的快。

第二、测试点有出现“1”的情况。

#include<stdio.h> //坑 
#include<math.h>  //坑 
using namespace std;

int main(){
	

	while(1){
		unsigned int n;//注意点2、要记得用无符号变量,不然存不下。 
		scanf("%d",&n);
		
		if(n==0)	return 0;
		
		if(n==1){
			printf("No\n");
			continue;
		}
		
		 unsigned int m=floor(sqrt(n));//注意点1、用变量存上n开方的值可以加快for循坏时的判断。 
		
		bool pd=1;
   for(int i=2;i<=m;i++)
   {
    if(n%i==0){
		pd=0;
		break;
	}
    
   }
		if(pd) printf("Yes\n");
			else printf("No\n");
	}
	
} 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回文素数是指正读和反读都相同的素数。我们按照题目要求在区间[a,b]中找出回文素数。 首先,我们需要判断一个数是否为素数素数是指只能被1和自身整除的正整数。我们可以使用试除法来判断一个数是否为素数,即判断该数是否能被2到根号n之间的所有数整除。 然后,我们需要判断一个数是否为回文数。回文数是指正读和反读都相同的数。我们可以将该数转换为字符串,然后通过比较字符串的前一半与后一半是否相等,即可判断是否为回文数。 接下来,我们可以使用循环在区间[a,b]中逐个判断数是否为回文素数。将每个数都判断是否为素数和回文数,如果同时满足,则记录该数。 最后,我们将找到的回文素数输出或保存即可。 以下是一个实例代码: ```python import math def is_prime(n): if n < 2: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True def is_palindrome(n): str_n = str(n) if str_n == str_n[::-1]: return True return False def find_palindrome_primes(a, b): palindrome_primes = [] for num in range(a, b + 1): if is_prime(num) and is_palindrome(num): palindrome_primes.append(num) return palindrome_primes a = int(input("请输入区间a:")) b = int(input("请输入区间b:")) result = find_palindrome_primes(a, b) print("在区间[{}, {}]中的回文素数为:{}".format(a, b, result)) ``` 注意,以上代码为Python示例,可以在输入区间a和b后直接得到回文素数的结果。如果使用其他编程语言,可以根据代码逻辑进行相应实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SQ_ZYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值