使用問心一言生成,然後手動修改。
def find_possible_a_values(data_in, num_n, start=100, max_a=1000): if max_a is None: # 如果沒有指定上限,則使用資料集中的最大值作為上限的一個粗略估計 max_a = max(data_in) possible_a_values = set() data_set = set(data_in) # 去除重複資料 # 從start開始,檢查每個s的倍數是否滿足條件,s=1.則是按1遞增,s=2,按2遞增。 a = start bei = 5 while a <= max_a: remainder_counts = {} for x in data_set: remainder = x % a if remainder not in remainder_counts: remainder_counts[remainder] = 0 remainder_counts[remainder] += 1 if len(remainder_counts) == num_n: possible_a_values.add(a) # 跳到下一個bei的倍數 a += bei return possible_a_values # 示例資料 data = [2370, 6950, 2460, 1170, 7160, 1310] n = 4 # 希望餘數只有n種不同的值 # 呼叫函式 possible_a_values_end = find_possible_a_values(data, n) print(f"Possible a values: {possible_a_values_end}")
輸出
Possible a values: {100, 235, 940, 470, 150, 120}