文件digit.txt中存放了若干行的字符串。每行字符串中又包含了若干整数。请编写程序,完成(1)统计其中共有多少个不同的整数;(2)找出这些整数中所有素数,并按素数大到小的顺序输出。
时间: 2024-03-01 21:49:41 浏览: 57
好的,针对你的问题,我可以给出以下Python代码:
```python
import math
# 读取文件,获取所有整数
nums = set()
with open('digit.txt', 'r') as f:
for line in f:
nums.update(map(int, line.strip().split()))
# 统计不同的整数个数
num_count = len(nums)
print(f"共有{num_count}个不同的整数")
# 找出素数并按素数大小排序输出
prime_nums = []
for num in nums:
if num < 2:
continue
is_prime = True
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
is_prime = False
break
if is_prime:
prime_nums.append(num)
prime_nums.sort(reverse=True)
print("素数列表:", prime_nums)
```
其中,我们使用`set`数据类型来保存所有出现过的整数,因为`set`可以自动去重,避免了重复计数的问题。然后我们遍历整个`set`,判断其中每个整数是否为素数,将素数保存到一个列表中,并按素数大小进行降序排序输出。
相关问题
1.文件digit.txt中存放了若干行的字符串。每行字符串中又包含了若干整数。请编写程序,完成(1)统计其中共有多少个不同的整数;(2)找出这些整数中所有素数,并按素数大到小的顺序输出。 说明:digit.txt文件及其中的若干行的整数,请自行准备
好的,我可以帮你解决这个问题。首先,我们需要读取digit.txt文件中的所有整数,并统计其中不同整数的数量。可以使用Python的set数据类型来实现去重和计数。具体代码如下:
```python
# 读取文件中的所有整数
nums = []
with open('digit.txt', 'r') as f:
for line in f:
nums.extend(map(int, line.strip().split()))
# 统计不同整数的数量
num_set = set(nums)
num_count = len(num_set)
print("共有%d个不同的整数" % num_count)
```
接下来,我们需要找出所有素数,并按素数大到小的顺序输出。可以使用Python的filter函数来实现筛选素数,再使用sorted函数来排序。具体代码如下:
```python
# 判断一个数是否为素数
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 筛选素数并按素数大到小排序
prime_nums = sorted(filter(is_prime, num_set), reverse=True)
print("所有素数为:", prime_nums)
```
这样,我们就完成了题目要求的两个任务。完整代码如下:
```python
# 判断一个数是否为素数
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 读取文件中的所有整数
nums = []
with open('digit.txt', 'r') as f:
for line in f:
nums.extend(map(int, line.strip().split()))
# 统计不同整数的数量
num_set = set(nums)
num_count = len(num_set)
print("共有%d个不同的整数" % num_count)
# 筛选素数并按素数大到小排序
prime_nums = sorted(filter(is_prime, num_set), reverse=True)
print("所有素数为:", prime_nums)
```
用Java实现如下题目,其中文件digit.txt中存放了若干行的字符串。每行字符串中又包含了若干整数。请编写程序,完成(1)统计其中共有多少个不同的整数;(2)找出这些整数中所有素数,并按素数大到小的顺序输出。 说明:digit.txt文件及其中的若干行的整数,请自行准备。
好的,以下是Java实现的代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class UniqueIntegers {
public static void main(String[] args) {
Set<Integer> integerSet = new HashSet<>();
List<Integer> primeList = new ArrayList<>();
try {
BufferedReader reader = new BufferedReader(new FileReader("digit.txt"));
String line;
while ((line = reader.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
int number = Integer.parseInt(tokenizer.nextToken());
integerSet.add(number);
}
}
reader.close();
} catch (IOException e) {
System.err.println("Error reading file");
System.exit(1);
}
for (int number : integerSet) {
if (isPrime(number)) {
primeList.add(number);
}
}
Collections.sort(primeList, Collections.reverseOrder());
System.out.println("Number of unique integers: " + integerSet.size());
System.out.println("Prime integers in descending order: " + primeList);
}
private static boolean isPrime(int number) {
if (number <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
```
以上代码实现了读取文件、统计唯一整数、筛选素数并按照降序输出的功能。其中,文件名为“digit.txt”,保存在与程序同一目录下。在程序中,我们使用了HashSet来统计唯一整数,使用ArrayList来存储素数。在isPrime函数中,我们采用了常规的判断素数方法,即从2到sqrt(n)逐个判断是否存在因子。最后使用Collections.sort函数将素数列表按降序排序,并输出结果。
希望这份代码能够帮助到你,如果有任何问题,欢迎随时提出。
阅读全文