?将一个整数分割为n个连续整数之和2010-07-11 15:27通过简单整数论可以得到很好的简化。
这里的某些连续奇数必然有个平均数的,只要找到这个平均数很容易得到,连续数列。
偶数的平方(立方也是)被分割成偶数项是满足条件的,
奇数的平方(立方也是)被分割成奇数项是满足条件的,
#include
#define N 100
void devide(int n);
void showDevide(int n,int x);
void getFactors(int n,int factors[N]);
int main(){
devide(12*12);
system("pause");
return 0;
}
void devide(int n){ //分割函数入口
int facts[N];
int i=0;
getFactors(n,facts); //得到所有约数
while(facts[i]!=0){
if(canBeDevided(n,facts[i]))showDevide(n,facts[i]);
else;
i++;
}
}
int canBeDevided(int n,int x){ //判断是否可分
if(n%x==0&;&;(n/x)%2==x%2)return 1;//能整除,而且分割段数与平均数的奇偶性相同,则可分。
else return 0; //否则不可分。
}
void showDevide(int n,int x){ //打印分割结果
int avg = n/x;
int min = avg-x+1;
int i;
printf("\n%d=%d",n,min);
for(i=1;i }
void getFactors(int n,int factors[N]){ //得到指定整数的所有约数。
int i,index=0;
for(i=0;i for(i=2;i<=n/2;i++){
if(n%i==0)factors[index++]=i;
}
}
Socket通信完成的局域网一对一聊天器2010-10-02 15:47
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.net.*;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;
@SuppressWarnings("serial")
public class EasyQQ extends JFrame {
private JPanel jContentPane = null;
private JTextField message = null;
private JButton sendButton = null;
private JTextArea showMsg = null;
private int personalPort;
private JLabel ipLabel = new JLabel("IP:");
private JLabel portLabel = new JLabel("Port:");
private JTextField IP = new JTextField();
private JTextField PORT = new JTextField(""+personalPort);//没用。表达连接的端口一样的意思。
private JButton testConn = new JButton("测试");
private JButton cleaner = new JButton("清空消息框");
{
ipLabel.setBounds(100,50,50,30);
IP.setBounds(150, 50, 80, 30);
portLabel.setBounds(250, 50, 50, 30);
PORT.setBounds(300, 50, 80, 30);
testConn.setBounds(400, 50, 100, 30);
cle
aner.setBounds(100,250,150,30);
testConn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String url = IP.getText();
try {
int port = Integer.parseInt(PORT.getText());
if(openClient(url, port))showMsg.setText(showMsg.getText()+"\n连接成功");
else showMsg.setText(showMsg.getText()+"\n连接失败");
} catch (NumberFormatException e1) {
showMsg.setText(showMsg.getText()+"\n请输入数字型端口号!");
}
}
});
cleaner.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showMsg.setText("");
}
});
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (message == null) {
message = new JTextField();
message.setBounds(100,300,300,30);
}
return message;
}
private JTextArea getJTextArea() {
if (showMsg == null) {
showMsg = new JTextArea();
showMsg.setBackground(Color.orange);
showMsg.set