24 素数

24 素数

作者: XXX时间限制: 1S章节: 循环

问题描述 :

判断一个数是不是素数

输入说明 :

第一行为N

下面N行,每行一个数字n

 

输出说明 :

判断n是不是素数,是就输出yes,否则输出no

输入范例 :

3
897
23
97

输出范例 :

no
yes
yes
 

#include <stdio.h>

int judge(int n)
{
	int j;
    for(j=2;j<=n/2;j++)
		{
		     if(n%j == 0 && n != 2)
			 {
					return 0;
			 }					
		}
	return 1;
}

int main(){
	int N;
	while(scanf("%d",&N) != EOF)
	{    
		int i;
		for(i=0;i<N;i++)
		{
			int n;
			scanf("%d",&n);
			if(judge(n) == 1)
			    printf("yes\n");
			else 
				printf("no\n");
		}
	}
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 题目中说每个非素数(合数)都可以写成几个素数相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2和3相乘,所以6的质因数是2和3。现在,你的程序要读入一个范围内的整数,然后输出它的质因数分解式。当读到素数时,输出它本身。 ### 回答2: 这道题目可以使用质因数分解算法来解决。具体来说,我们可以从最小的素数2开始,不断尝试将输入的数用2去除,如果可以除尽的话,就是它的一个质因子,我们记录下这个质因子,并将这个数除以2,然后继续尝试用2去除这个数。如果不能除尽的话,我们则尝试用下一个最小的素数来除。一直到公因子为1为止,这时候所有的质因子都已经求出来了。 以下是详细的程序实现: ```python def prime_factor(num): ''' 对输入的数进行质因数分解,返回一个字典,保存每个质因子的指数 ''' factors = {} div = 2 while num > 1: if num % div == 0: num //= div if div in factors: factors[div] += 1 else: factors[div] = 1 else: div += 1 return factors n = int(input()) if n == 2: print(n) else: factors = prime_factor(n) for factor in sorted(factors.keys()): power = factors[factor] print('{}^{}'.format(factor, power), end='') if factor != list(factors.keys())[-1]: print('*', end='') ``` 我们首先定义一个函数`prime_factor`,这个函数的作用就是对一个输入的数进行质因数分解,返回一个字典,其中保存每个质因子的指数。具体来说,该函数从最小的素数2开始,不断地去除输入数中的质因子,直到1为止。最后,返回一个字典,其中key表示质因子的值,value表示这个质因子在输入的数中出现的次数。 接着,我们读入输入的整数n,如果n是2,那么它必定是质数,直接输出即可。否则,我们就对n进行质因数分解,得到一个质因子字典。最后,我们按顺序输出每个质因子的信息,每个质因子的信息包括这个质因子的值和指数。最后一个质因子之后不能有“*”符号,所以我们需要特殊处理一下。 ### 回答3: 首先,我们需要判断一个数是否为素数素数指的是只能被1和它本身整除的数,所以我们可以用循环从2到这个数的平方根,判断是否有能整除它的数。如果有,则它不是素数;如果没有,则它是素数。 接下来,我们需要分解这个数的质因数。假设当前处理的数为n,从2开始循环,如果n能被i整除,则将i输出,并将n除以i,继续循环。直到n不能被i整除为止。这样做的原理是,n可以写成一个质数i和另一个数n/i的积,而n/i一定比i大,所以我们可以先找到最小的质因子i,然后递归地对n/i进行分解,直到分解完为止。 最后,我们可以将这些质因数按照乘法的形式输出即可。 以下是用Python实现的程序代码: ```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 prime_factorization(n): factors = [] i = 2 while i <= n: if n % i == 0: factors.append(i) n //= i else: i += 1 return factors num = int(input()) if is_prime(num): print(num) else: factors = prime_factorization(num) print('x'.join(str(f) for f in factors)) ``` 我们首先定义了一个is_prime函数判断一个数是否为素数,然后定义了一个prime_factorization函数分解质因数并返回一个列表。最后读入输入,如果是素数则直接输出,否则调用prime_factorization函数分解质因数并将结果按照乘法的形式输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值