请编写一个函数，其输入是两个字符串 s1 和 s2，输出是它们的最长公共前缀。
s1 = "flower", s2 = "flow", s3 = "flight"
可以使用以下 Python 代码实现该函数：

```python
def longest_common_prefix(s1, s2):
    i = 0
    while i < len(s1) and i < len(s2) and s1[i] == s2[i]:
        i += 1
    return s1[:i]

print(longest_common_prefix("flower", "flow")) # 输出 "flow"
print(longest_common_prefix("flower", "flight")) # 输出 "fl"
```

该函数首先初始化一个计数器 i，然后逐个比较 s1 和 s2 中每个字符的相等性，当字符不相等或已比较至短字符串末尾时，循环停止。最后，函数返回 s1 中从第一个字符开始的公共前缀。

需要注意的是，上述代码只能求两个字符串的最长公共前缀。对于多个字符串，可以将该函数应用于首尾相邻的字符串，不断缩小计算范围，直到求得整个字符串列表的最长公共前缀。