python基础——输入一个数,找出它除1和自身外的所有因子

本篇博客介绍了一个简单的Python程序,该程序接收用户输入的一个整数,并将其分解为质因数。通过循环和条件判断,程序能够找出所有小于等于输入数的质数,并检查这些质数是否为输入数的因数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

x=int(input("input x="))
a=2
s=[]
for i in range(1,x+1):
    if x>a and x%a==0:
        s.append(a)
    a=a+1
print("answer is",s)

 

### 实现方案 为了实现从键盘输入两个正整数 `m` `n` 并找出其间的所有素,可以采用多种编程语言来完成这一任务。以下是几种常见编程语言的具体实现方法。 #### C++ 实现 C++ 是一种高效的编程语言,在处理这类问题上表现良好。下面展示了如何利用 C++ 来解决这个问题: ```cpp #include <iostream> using namespace std; 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; } void findPrimesInRange(int m, int n) { cout << "Between " << m << " and " << n << ", the prime numbers are:" << endl; for (int number = max(m, 2); number <= n; ++number) { if (isPrime(number)) { cout << number << " "; } } cout << endl; } ``` 这段代码定义了一个辅助函 `isPrime()` 来检测给定值是否为素,并且优化了算法效率[^4]。主程序部分则遍历指定范围内所有的整并调用此函进行筛选。 #### Python 实现 Python 的简洁语法使得编写此类脚本变得非常直观易懂。这里提供了一种基于列表推导式的解决方案: ```python def is_prime(num): if num <= 1: return False for factor in range(2, int(num ** 0.5) + 1): if num % factor == 0: return False return True def primes_between(m, n): result = [] for value in range(max(2, m), n + 1): if is_prime(value): result.append(str(value)) formatted_output = ' '.join(result[i:i+10] for i in range(0,len(result),10)).strip() print(formatted_output) if __name__ == "__main__": M, N = map(int, input().split()) primes_between(M, N) ``` 上述代码实现了更优雅的结果展示方式——即按照题目要求每行最多显示十个字[^3]。同时采用了平方根范围内的因子测试法提高性能。 #### Java 实现 对于那些偏好面向对象特性的开发者来说,Java 提供了另一种选择。下面是使用 Java 编写的相功能模块: ```java import java.util.Scanner; public class PrimeFinder { public static boolean checkPrime(long number){ if (number <= 1 || (number != 2 && number % 2 == 0)){ return false; } long sqrtOfNumber = (long)Math.sqrt((double)number); for (long divisor = 3 ;divisor <= sqrtOfNumber;divisor += 2){ if ((number % divisor) == 0){ return false; } } return true; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter two positive integers:"); Long startValue = scanner.nextLong(); Long endValue = scanner.nextLong(); StringBuilder outputBuilder = new StringBuilder(); int countInLine = 0; for (;startValue<=endValue;startValue++){ if(checkPrime(startValue)){ outputBuilder.append(startValue).append(" "); countInLine++; if(countInLine%10==0){ outputBuilder.append("\n"); } } } String finalOutput = outputBuilder.toString().trim(); // Remove trailing spaces or newline characters. System.out.print(finalOutput.isEmpty()? "No Primes Found." :finalOutput ); } } ``` 该版本不仅考虑到了奇偶性快速排非候选者的情况,还特别注意到了输出格式的要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值